FS: Резервное копирование файловой системы

FS: Резервное копирование файловой системы

Сделал скрипт для резервного копировать файловой системы. Скрипт может шифровать полученный архив и передавать его в удалённое хранилище.

Скрипт

Скрипт состоит из трёх компонентов:

  • app.backup.fs.conf - файл с настройками.
  • app.backup.fs.sh - приложение.
  • cron_backup_fs - задание для CRON.

Установка

  • Скачать и распаковать скрипт:
1
export SET_DIR='/root/apps/backup'; export GH_NAME='bash-backup-fs'; export GH_URL="https://github.com/pkgstore/${GH_NAME}/archive/refs/heads/main.tar.gz"; curl -Lo "${GH_NAME}-main.tar.gz" "${GH_URL}" && tar -xzf "${GH_NAME}-main.tar.gz" && { cd "${GH_NAME}-main" || exit; } && { for i in app.*; do install -m 644 -Dt "${SET_DIR}" "${i}"; done; } && { for i in cron_*; do install -m 644 -Dt '/etc/cron.d' "${i}"; done; } && chmod +x "${SET_DIR}"/*.sh
  • Скопировать файлы app.backup.fs.conf и app.backup.fs.sh в директорию /root/apps/backup/.
  • Скопировать файл cron_backup_fs в директорию /etc/cron.d/.
  • Настроить параметры скрипта в файле app.backup.fs.conf.

Настройка

  • FS_SRC - массив с путями директорий для резервного копирования.
  • FS_DST - директория для хранения резервных копий.
  • ENC_ON - включение / отключение функции шифрования.
    • 0 - шифрование отключено.
    • 1 - шифрование включено.
  • ENC_APP - приложение для шифрования.
    • gpg - для шифрования использовать OpenGPG.
    • ssl - для шифрования использовать OpenSSL.
  • ENC_PASS - секретная фраза для шифрования.
  • ENC_GPG_CIPHER - алгоритм симметричного шифрования GPG. По умолчанию: AES256.
  • ENC_GPG_DIGEST - алгоритм хеша для преобразования секретной фразы при симметричном шифровании GPG. По умолчанию: SHA512.
  • ENC_GPG_COUNT - указать, сколько циклов преобразования будет проходить секретная фраза для симметричного шифрования GPG. По умолчанию: 65536.
  • ENC_SSL_CIPHER - алгоритм симметричного шифрования SSL. По умолчанию: aes-256-cfb.
  • ENC_SSL_DIGEST - алгоритм хеша для преобразования секретной фразы при симметричном шифровании SSL. По умолчанию: sha512.
  • ENC_SSL_COUNT - указать, сколько циклов преобразования будет проходить секретная фраза для симметричного шифрования SSL. По умолчанию: 65536.
  • SYNC_ON - включение / отключение функции синхронизации.
    • 0 - синхронизация отключена.
    • 1 - синхронизация включена.
  • SYNC_HOST - IP-адрес удалённого хранилища для соединения по SSH.
  • SYNC_PORT - порт удалённого хранилища для соединения по SSH. По умолчанию: 22.
  • SYNC_USER - имя пользователя удалённого хранилища для соединения по SSH. По умолчанию: root.
  • SYNC_PASS - пароль пользователя удалённого хранилища для соединения по SSH.
  • SYNC_DST - директория удалённого хранилища для синхронизации дампов базы данных.
  • SYNC_DEL - параметр добавляет опцию --delete, которая удаляет посторонние файлы на удалённом хранилище.
    • 0 - опция отключена.
    • 1 - опция включена.
  • SYNC_RSF - параметр добавляет опцию --remove-source-files, которая удаляет исходные файлы после синхронизации с удалённым хранилищем.
    • 0 - опция отключена.
    • 1 - опция включена.
  • SYNC_PED - параметр добавляет опцию --prune-empty-dirs, которая исключает из процесса синхронизации пустые директории.
    • 0 - опция отключена.
    • 1 - опция включена.
  • SYNC_CVS - параметр добавляет опцию --cvs-exclude, которая исключает из процесса синхронизации нежелательные элементы, например: CWRCS, SCCS, CVS, CVS.adm, RCSLOG, cvslog.*, tags, TAGS, .make.state, .nse_depinfo, *~, #*, .#*, ,*, _$*, *$, *.old, *.bak, *.BAK, *.orig, *.rej, .del-*, *.a, *.olb, *.o, *.obj, *.so, *.exe, *.Z, *.elc, *.ln, core, .svn/, .git/, .bzr/.
    • 0 - опция отключена.
    • 1 - опция включена.

Приложение

Приложение забирает параметры из файла настроек и обрабатывает значения.

Задание

Задание запускает скрипт каждое воскресенье в 01:15.

Восстановление

Набор команд, описывающий алгоритм восстановления резервной копии файлов.

GPG

  • Расшифровать архив базы данных FILE_NAME.tar.xz.gpg при помощи секретной фразы SECRET:
1
f='FILE_NAME.tar.xz.gpg'; p='SECRET'; gpg --batch --passphrase "${p}" --output "${f%.*}" --decrypt "${f}"

OpenSSL

  • Расшифровать архив базы данных DB_NAME.sql.xz.ssl при помощи секретной фразы SECRET, дайджеста (-md) sha512 и количества итераций (-iter) 65536:
1
f='DB_NAME.sql.xz.ssl'; p='SECRET'; openssl enc -aes-256-cfb -in "${f}" -out "${f%.*}" -pass "pass:${p}" -d -md 'sha512' -iter '65536' -salt -pbkdf2