# Скрипт для резервирования данных Скрипт используется для резервирования датасетов файловой системы 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`