Промених стратегията за архивиране на моя 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" ];
};
}