5.9 KiB
Скрипт для резервирования данных
Скрипт используется для резервирования датасетов файловой системы zfs. Необходим запуск от суперпользователя.
Флаги
Используемая оболочка: zsh
./zfs_send.zsh
-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Режим резервирования (по умолчанию полная копия) Данные по умолчанию можно отредактировать в самом скрипте в рамом начале.
Ожидается, что доступ по 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Инерментная копия на сервер по умолчанию. Датасеты будут сопоставлены автоматически. Будет предложен выбор резервируемых датасетов.
После запуска
Во время резервирования данных нельзя закрывать сессию пользователя. Иначе резервирование прервётся.
Само резервирование происходит в фоновом процессе. А в консоль выводится информация о прогрессе резервирования через команду ps -u. При прерывании этого процесса через Ctrl+C резервирование не прекращается. Если необходимо прервать резервирование, то нужно:
ps -uузнать PID процесса zfs sendskill 12345Завершить номер процесса или просто завершить сессию пользователя.