Olen nyt muuttanut NixOS-kotipalvelimeni varmuuskopioinnin ja siirtynyt yksinkertaisesta päivittäisestä skriptistä tuntikohtaiseen varmuuskopiointiin. Ei aivan yhtä tyylikästä kuin ystäväni hallinnoimalla Mastodon-instanssilla – siellä meillä on ZFS-snapshot 20 minuutin välein – mutta olen tyytyväinen tähänkin ratkaisuun. Ja täytyy sanoa, että NixOS miellyttää minua yhä enemmän. Ilman tekoälyä se olisi kuitenkin aivan liian monimutkaista ymmärrettäväksi, mutta nykyään osaan ainakin lukea valmiita Nix-tiedostoja. Harkitsin joskus palvelimen vaihtamista tavalliseen Linuxiin, mutta niin kauan kuin tämä toimii näin hyvin...
-
/etc/nixos: Koko NixOS-konfiguraatio (kaikki .nix-tiedostot). -
/opt/minecraft: Kaikki Minecraft-palvelimen maailmat ja tiedot. -
/opt/satisfactory: Satisfactory-palvelimen tallennukset ja konfiguraatio. -
/opt/Blog: Blogin lähdekoodi ja sisällöt. -
/opt/ui: Mastodon-käyttöliittymän tiedostot. -
/opt/audiobookshelf: Äänikirjat ja niihin liittyvä tietokanta.
Kaikki tämä päätyy S3-tallennustilaan, joka on liitetty RClonen kautta.
NixOS-konfiguraatio
{ config, pkgs, ... }:
{
# BorgBackup-konfiguraatio
services.borgbackup.jobs.hourly = {
# Polku repositoryyn S3-liitoksessa
repo = "/opt/S3/Backup/NixOSHomeServer_Borg";
# Salasanaa ei vaadita
encryption.mode = "none";
# Pakkaus säästää vielä enemmän tilaa
compression = "auto,zstd";
# Varmuuskopioitavat polut
paths = [
"/etc/nixos"
"/opt/minecraft"
"/opt/satisfactory"
"/opt/Blog"
"/opt/ui"
"/opt/audiobookshelf"
];
# Tuntikohtainen suoritus
startAt = "hourly";
# Alusta repository automaattisesti, jos se puuttuu
doInit = true;
# Säilytyssäännöt (Pruning)
prune.keep = {
within = "1d"; # Kaikki snapshotit viimeisen 24 tunnin ajalta
daily = 7;
weekly = 4;
monthly = 12;
};
};
# Varmistetaan, että S3-liitos on valmis ennen kuin Borg käynnistyy
systemd.services.borgbackup-job-hourly = {
requires = [ "rclone-s3-mount.service" ];
after = [ "rclone-s3-mount.service" ];
};
}