Pakeičiau savo NixOS namų serverio atsarginio kopijavimo strategiją: vietoj paprasto kasdienio skripto dabar kopijos daromos kas valandą. Tai nėra taip elegantiška, kaip mano draugo valdomoje „Mastodon“ instancijoje – ten kas 20 minučių daromos ZFS momentinės kopijos (snapshots) – tačiau šiuo sprendimu aš taip pat esu patenkintas. Ir turiu pasakyti, kad NixOS man patinka vis labiau. Be dirbtinio intelekto tai būtų per daug sudėtinga, kad suprasčiau, tačiau dabar bent jau galiu perskaityti paruoštus „Nix“ failus. Svarsčiau galimybę serveryje įdiegti įprastą „Linux“ distribuciją, bet kol viskas taip gerai veikia...
-
/etc/nixos: Visa NixOS konfigūracija (visi .nix failai). -
/opt/minecraft: Visi „Minecraft“ serverio pasauliai ir duomenys. -
/opt/satisfactory: „Satisfactory“ serverio išsaugojimai ir konfigūracija. -
/opt/Blog: Tinklaraščio pirminis kodas ir turinys. -
/opt/ui: „Mastodon“ vartotojo sąsajos (UI) failai. -
/opt/audiobookshelf: Audio knygos ir susijusi duomenų bazė.
Visa tai keliauja į S3 saugyklą, prijungtą per „RClone“.
NixOS konfigūracija
{ config, pkgs, ... }:
{
# BorgBackup konfigūracija
services.borgbackup.jobs.hourly = {
# Kelias iki saugyklos (repository) S3 prijungimo taške
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Slaptažodis nereikalingas
encryption.mode = "none";
# Suspaudimas dar didesniam vietos taupymui
compression = "auto,zstd";
# Keliai, kurių atsarginės kopijos bus daromos
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Vykdymas kas valandą
startAt = "hourly";
# Automatiškai inicijuoti saugyklą, jei jos nėra
doInit = true;
# Saugojimo taisyklės (pruning)
prune.keep = {
within = "1d"; # Visos momentinės kopijos per paskutines 24 val.
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Užtikrinti, kad S3 saugykla būtų prijungta prieš paleidžiant „Borg“
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}