Práve som zmenil zálohovanie svojho NixOS domáceho servera a namiesto jednoduchého denného skriptu som prešiel na hodinové zálohovanie. Nie je to také elegantné ako na inštancii Mastodonu, ktorú spravuje môj kamarát – tam máme ZFS snapshot každých 20 minút – ale s týmto riešením som tiež spokojný. A musím povedať, že NixOS sa mi páči čoraz viac. Bez umelej inteligencie by to však bolo príliš komplikované na to, aby som to pochopil, ale medzitým už dokážem hotové Nix súbory aspoň čítať. Uvažoval som o tom, že server prehodím na bežný Linux, ale kým to takto dobre funguje...
-
/etc/nixos: Celá konfigurácia NixOS (všetky .nix súbory). -
/opt/minecraft: Všetky svety a dáta Minecraft servera. -
/opt/satisfactory: Uložené pozície a konfigurácia Satisfactory servera. -
/opt/Blog: Zdrojový kód a obsah blogu. -
/opt/ui: Súbory Mastodon UI. -
/opt/audiobookshelf: Audioknihy a príslušná databáza.
Celé to končí na S3 úložisku, ktoré bolo pripojené cez RClone.
Konfigurácia NixOS
{ config, pkgs, ... }:
{
# Konfigurácia BorgBackup
services.borgbackup.jobs.hourly = {
# Cesta k repozitáru v S3 mounte
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Nevyžaduje sa žiadne heslo
encryption.mode = "none";
# Kompresia pre ešte väčšiu úsporu miesta
compression = "auto,zstd";
# Cesty, ktoré sa majú zálohovať
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Hodinové spúšťanie
startAt = "hourly";
# Automaticky inicializovať repozitár, ak chýba
doInit = true;
# Pravidlá uchovávania (Pruning)
prune.keep = {
within = "1d"; # Všetky snapshoty za posledných 24 h
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Zabezpečenie, aby bol S3 mount pripravený pred spustením Borgu
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}