Скрипт для резервирования данных
Скрипт используется для резервирования датасетов файловой системы zfs. Необходим запуск от суперпользователя.
Флаги
Используемая оболочка: zsh
./zfs_send.zsh
-h | --helpКратская справка по ключам-rs | --remote-server <>IP адрес или доменное имя сервера для резервирования (по умолчанию 192.168.0.162)-ru | --remote-user <>Пользователь SSH на удалённом сервер (по умолчанию root)-s | --snapshot <>Задать имя снимка для резервирования (по умолчанию manual-YYYYMMDD, где YMD - текущая дата, месяц и день)-ld | --local-dataset <>Резервируемый датасет (по умолчанию интерактивный режим)-rd | --remote-dataset <>Нахождение датасета на удалённой машине (по умолчанию интерактивный режим)-i | --incrementalРежим резервирования (по умолчанию полная копия) Данные по умолчанию можно отредактировать в самом скрипте в рамом начале.--no-progressНе выводить прогресс--progress-onlyЗапустить только вывод прогресса, если уже запущено резервирование в флне--no-checkНе запрашивать подтверждения. Если нужно запускать скрипт по расписанию--stopОстановить текщие фоновые процессы резервирования, запучщенные скриптом
Настройка доступа по ключу SSH
Ожидается, что доступ по SSH на удалённую машину уже настроен. Доступ нужен с использованием ssh-ключа. Если доступ по паролю, то скприт попытается создать ключ и закинуть его на сервер (по паролю)
Если после удачной процедуры всё же не получается подсоединиться, то нужно вручную добавлять выведеный на экран публичный ключ на бэкап-сервер, возможно через веб-гуй.
Режим резервирования датасета целиком
Когда не использован флаг -i
Если не указаны --local-dataset и --remote-dataset, то скрипт запросит список датасетов на локальной машине и на удалённом сервере. Будет предлоден выбор какой датасет на какой резервировать.
Примеры:
./zfs_send.zshПолная резервная копия дата сета на сервер по умолчанию. Указать датасаты для резервирования можно в интерактивном режиме../zfs_send.zsh -rs backup.local -ld /main_pool/Documents -rd /backupВ данном случае на удалённой машине будет создан датасет/backup/Documents. Если такой датасет уже существует, то будет выдана ошибка и резервирование остановится.
Пример вывода в процессе работы
Режим инкрементный
После полного резервирования возможно сделать резерв только изменённой части файловой системы указав флаг -i
Если не указаны --local-dataset и --remote-dataset, то скрипт сопоставит имеющиеся датасеты на локальной и удалённых машинах и предложит возможные варианты резервирования. Сопоставление производится по совпадения названий датасетов нижнего уровня.
./zfs_send.zsh -rs 192.168.0.162 -iИнкрементная резервная копия дата сета. Указать датасаты для резервирования в интерактивном режиме../zfs_send.zsh -rs 192.168.0.162 -i -ld /main_pool/Documents -rd /backup/DocumentsВ данном случае на удалённой машине должен существовать датасет/backup/Documentsи у него должны сохранятся прошлые снимки файловой системы для определения новых файлов для резервирования. Если такой датасет отсутвует, то будет выдана ошибка и резервирование остановится.
Пример вывода в процессе работы
Примеры запуска
./zfs_send.zshПолная резервная копия выбранного в интерактивном режиме дата сета на сервер по умолчанию. Будет создан снимок файловой системы с названиемmanual_20241104, где цифры - текщая дата../zfs_send.zsh -rs 192.168.0.21 --snapshot man_2405Полная резервная копия дата сета на сервер192.168.0.21. Будет создан снимок файловой системы с названиемman_2405. Датасет будет./zfs_send.zsh -iИнерментная копия на сервер по умолчанию. Датасеты будут сопоставлены автоматически. Будет предложен выбор резервируемых датасетов../zfs_send.zsh --stopПрервать запущенные ранее операции резервирования
После запуска
Во время резервирования данных нельзя закрывать сессию пользователя. Иначе резервирование прервётся.
Само резервирование происходит в фоновом процессе. Если необходимо прервать процесс, то воспользуйтесь коммандой ./zfs_send.zsh --stop