Скрипт для резервирования данных

Скрипт используется для резервирования датасетов файловой системы 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 резервирование не прекращается. Если необходимо прервать резервирование, то нужно:

  1. ps -u узнать PID процесса zfs sends
  2. kill 12345 Завершить номер процесса или просто завершить сессию пользователя.
Description
No description provided
Readme 151 KiB
Languages
Shell 100%