Автоматическое резервное копирование

Frost делает копии по расписанию с помощью встроенного планировщика вашей операционной системы. Между копиями в фоне ничего не работает.

#Как изменить расписание

frost init спрашивает, как часто делать копии. Чтобы изменить это позже:

frost config set schedule.every 6h

Можно выбрать hourly, 2h, 3h, 4h, 6h, 8h, 12h, daily и weekly. По умолчанию используется daily.

Чтобы выбрать, когда выполняется копирование, укажите время в 24-часовом формате, а для еженедельного копирования ещё и день:

frost config set schedule.time 09:30
frost config set schedule.day friday

По умолчанию используются 15:00 и sunday. Чтобы выключить автоматическое копирование или снова включить его:

frost config set schedule.enabled false
frost config set schedule.enabled true

Каждое изменение сразу обновляет задание по расписанию. В macOS и Windows изменение, сделанное во время копирования по расписанию, применяется сразу после его завершения. Если вы редактируете config.toml вручную, следующая команда Frost обновит задание.

#Когда выполняется копирование

Копирование выполняется в schedule.time по местному времени компьютера:

schedule.every Копирует
daily Каждый день в это время
weekly Каждую неделю в день schedule.day, в это время
От 2h до 12h В это время и через каждый интервал до и после него. 6h от 15:00 запускается в 03:00, 09:00, 15:00 и 21:00
hourly Каждый час, в минуты этого времени

systemd запускает каждое копирование со случайной задержкой до 5 минут.

#Пропущенные копии

Если в назначенное время компьютер был выключен или спал, Frost сделает копию, как только он снова заработает. Сколько бы запусков ни было пропущено, копия делается одна.

Планировщик Запускает пропущенную копию
launchd (macOS) Когда Mac просыпается или когда вы входите в систему после его выключения
systemd (Linux) Когда компьютер просыпается или включается, а если lingering выключен, когда вы входите в систему
Планировщик заданий (Windows) Как только может, когда компьютер снова работает и вы вошли в систему
cron (Linux) В течение 15 минут после того, как компьютер снова заработает

С cron Frost проверяет каждые 15 минут и делает копию, только когда подошло время или копия была пропущена. Для времени, которое уже покрыто копией по расписанию или копией, которую вы запустили сами, вторая копия не делается.

Чтобы вместо этого пропускать такие копии и копировать только вовремя:

frost config set schedule.catch_up false

Если копирование по расписанию запускается раньше, чем появилась сеть или смонтирован диск либо сетевая папка, оно повторяет попытки около 5 минут. С локальным диском диск должен быть подключён во время копирования. Собственный сервер входит со своим SSH-ключом Frost, поэтому работает без вашего участия. Если идёт другое копирование, оно ждёт его завершения.

В Windows копирование по расписанию работает только пока вы вошли в систему. Оно не начинается при работе от батареи и прерывается, если отключить питание от электросети. В macOS и с systemd копирование по расписанию идёт с низким приоритетом, чтобы не замедлять компьютер.

#Задание по расписанию

Система Планировщик Задание
macOS launchd ~/Library/LaunchAgents/io.github.whatithasisandalwayswillbe.frost.plist
Linux с systemd Пользовательский таймер systemd ~/.config/systemd/user/frost-backup.service и frost-backup.timer
Linux без systemd cron Строка в crontab с пометкой # frost-backup
Windows Планировщик заданий Задача с именем frost backup

Задание запускает frost backup с теми папками конфигурации и кэша, которые использовались при его создании. Если вы меняли эти папки, снова запустите frost init.

В macOS задание показано в разделе «Системные настройки > Основные > Объекты входа и расширения» (System Settings > General > Login Items & Extensions) под именем Node.js Foundation: так называется издатель среды выполнения, которая входит в Frost. Если выключить его там, копирование по расписанию остановится, а frost status сообщит, что задание пропало. Чтобы остановить копирование по расписанию, лучше используйте frost config set schedule.enabled false.

С systemd Frost пытается включить для вашего пользователя lingering (loginctl enable-linger), если может подтвердить, что lingering выключен. Благодаря ему копирование работает и после выхода из системы. Если включить lingering не удалось, после выхода копирование может остановиться. При удалении таймера Frost выключает lingering, только если сохранил запись о том, что сам его включил.

#Журналы

Планировщик Где журнал
launchd, cron и Планировщик заданий frost.log в папке кэша Frost. См. раздел Файлы и папки
systemd В журнале systemd. Читайте его командой journalctl --user -u frost-backup

Журнал больше 1 МиБ очищается перед следующим запуском. Удалась ли последняя копия, показывает и frost status.

#Если задание пропало

Если задание удалили или выключили, frost status пишет "scheduled job is missing" (задание по расписанию отсутствует). Верните его командой:

frost config set schedule.enabled true