Я перенастроил резервное копирование своего домашнего сервера на NixOS, перейдя с простого ежедневного скрипта на ежечасный бэкап. Это не так элегантно, как на инстансе Mastodon, которым управляет мой друг — там у нас снимки ZFS делаются каждые 20 минут — но и этим решением я вполне доволен. И должен сказать, что NixOS нравится мне всё больше и больше. Без ИИ всё это было бы слишком сложно для моего понимания, но теперь я, по крайней мере, могу читать готовые Nix-файлы. Я подумывал перевести сервер на обычный Linux, но пока всё работает так хорошо...
-
/etc/nixos: Вся конфигурация NixOS (все файлы .nix). -
/opt/minecraft: Все миры и данные сервера Minecraft. -
/opt/satisfactory: Сохранения и конфигурация сервера Satisfactory. -
/opt/Blog: Исходный код и содержимое блога. -
/opt/ui: Файлы интерфейса Mastodon. -
/opt/audiobookshelf: Аудиокниги и соответствующая база данных.
Всё это отправляется в хранилище S3, смонтированное через RClone.
Конфигурация NixOS
{ config, pkgs, ... }:
{
# Конфигурация BorgBackup
services.borgbackup.jobs.hourly = {
# Путь к репозиторию в S3-mount
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Пароль не требуется
encryption.mode = "none";
# Сжатие для еще большей экономии места
compression = "auto,zstd";
# Пути для резервного копирования
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Ежечасное выполнение
startAt = "hourly";
# Автоматическая инициализация репозитория, если он отсутствует
doInit = true;
# Правила хранения (очистка)
prune.keep = {
within = "1d"; # Все снимки за последние 24 часа
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Убедиться, что S3-mount готов перед запуском Borg
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}