Я перевів резервне копіювання свого домашнього сервера на 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-монтуванні
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;
# Правила зберігання (Pruning)
prune.keep = {
within = "1d"; # Усі снапшоти за останні 24 години
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Переконатися, що S3-монтування готове перед запуском Borg
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}