nas_scripts/README.md

56 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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