README.md

Cute backup :)

Простой скрипт ручного бекапа наиболее важных файлов, написан чисто для себя, но может кому ещё пригодится. Мне просто удобно хранить его дубль во вне. Так как дело касается важной вещи, а именно бекапов рекомендую использовать иные проверенные временем и опытом людей программы, а не эту портянку ::)

Использует rsync и zip Настройка производится внутри стрипта. Описание настройки бекапа тоже распологается внутри скрипта. Типичное использование это ручной запуск в конце дня или по завершению какой либо важной работы или перед сном :)

Использовать для бекапа, отдельный диск где нет ничего кроме бекапа!

В коде используется goto подойдёт любая версия луа от 5.2+ или luajit2.1

Зависимости

sudo apt install zip rsync notify-send lua5.2

Установка и удаление

Этот скрипт сугубо локальный поэтому устанавливатеся только в ~/.local/bin В текущем виде не надо его устанавливать для всех пользовтелей в систему.

make install
make uninstall

Использование

Настроить скрипт под себя отредактировав таблицу backup_rule, в ней уже находится реальный пример того что я бекаплю у себя. После чего просто его запускать.

Поля конфигурации backup_path и backup_pass_file могут содержать $USER это значение подменится на имя того пользователя который запустил скрипт. Нигде более в скрипте переменные окружения не раскрываются, кроме только этой и только для вышеуказанных полей для указания пути. Лучше вообще прописать явно имя пользователя.

  • Обязательные параметры
    • source каталог или файл источник
    • dest каталог приёмник
  • Дополнительные параметры
    • secure применить пароль (требуется zip=true)
    • zip сжать в архив
    • mirror сделать точную копию и обновить им текущий каталог бекапа( или архив если zip=true)
    • versions сделать точную копию и пометить датой в отдельном каталоге (или архиве если zip=true)

Пример поля конфигурации:

  • {secure=true, zip=true, versions=true, source='~/.ssh/', dest='ssh'};

Значит что нужно сделать рекурсивный бекап каталога с ключами ssh и расположить бекап в каталоге с именем ssh. secure=true означает что данные будут запаролены, а zip что будут сжаты, versions=true означает что каждый новый бекап будет создавать новую копию ~/.ssh помеченную датой. Описание того какие есть ключи и как они работают друг с другом есть внутри скрипта, вместе с примерами уже готовой настройки.

Ключи можно опускать (не указывать) обязательными являются только source и dest Не указанные ключи считаются заданными как false так что вот такая запись валидна

  • {source='~/Изображения/', dest='картинки'}

И означает сделать копию каталога ~/Изображения в каталоге картинки внутри общего каталога бекапа backup_path=... при этом если это второй или последующий бекап и в каталоге ~/Изображения/ была удалена картинка, она не будет удалена в каталоге картинки это сделано специально, дабы максимизировать сохраняемые данные. Если нужна точная копия с удалением того чего уже нет в каталоге источнике то нужно дополнительно явно указать опцию mirror=true это же правило работает если включить флаг zip=true будет всё тоже самое, но уже в виде архива.

На заметку

В каталоге относительно котрого исполняется скрипт будет лог бекапа, на рабочий стол будут приходить уведомление о текущем статусе выполнения, в случае ошибки будет показaн код возврата В лог попадает информация о том какая именно команда потерпела неудачу, пароль присутцвующий в команде заменяется на звёздочки. В зависимости от типа настроенного бекапа(первый бекап будет всегда долгим), а вот последующие при отсуцтвии изменений будут быстрыми исключение это mirror и versions оба создают точную копию с нуля, а не пытаются обновить текущее содержимое бекапа. В случае если любая программа вернёт код возврата отличный от 0 выполнение всего бекапа прерывается, и повторно он не запустится пока не будет удалён lock файл, это сделано специально, чтобы выяснить причину, исправить её и в ручном режиме удалить lock файл название котрого есть в срипте, в логах и уведомлении на рабочий стол.:

Если бекап идёт для активной программы например браузера то на время бекапа лучше браузер не трогать так как в 99% случаев бекап остановитя с ошибкой по причине изменения файла.

Описание

Скрипт для бекапа важных штук на домашнем ПК. Инкрементальность, версии, сжатие и пароли на месте

Конвейеры
0 успешных
0 с ошибкой