2024-11-08 20:02:13 +00:00
2024-11-08 19:56:12 +00:00

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

Скрипт используется для резервирования датасетов файловой системы 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 Не выводить прогресс
  • --no-check Не запрашивать подтверждения. Если нужно запускать скрипт по расписанию
  • --stop Остановить текщие фоновые процессы резервирования, запучщенные скриптом

Ожидается, что доступ по 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

Description
No description provided
Readme 151 KiB
Languages
Shell 100%