"Kein Backup - Kein Mitleid" kennt jeder denke ich.
Wer das nicht mehr hören will, sollte Backups machen.
Es gibt nen exorbitanten Haufen an GUI Backup Tools für Linux. GUI will man aber unter umständen nicht haben.
Die command-line taugt da schon mehr und für die command-line gibt es BORG (allein wegen dem Namen sollte man BORG verwenden).
Was ist BORG?
BORG ist ein "deduplicate backup tool". Dabei prüft BORG die zu sichernden Daten auf Redundanz und sichert nur die Daten die sich geändert haben.
Also exakt das, was man haben möchte um platzsparende Backups zu erstellen.
BORG selber verschlüsselt zudem die erstellten Backups und kann diese bei Bedarf auch komprimieren.
Die Kompressionsverfahren sind folgende:
- lz4 (sehr schnell, geringe Kompression)
- zstd (von Schnell und ohne Kompression bis Hohe Kompression und langsam)
- zlib (mittlere Geschwindigkeit und Kompression)
- lzma (langsam aber hohe Kompression)
BORG kann auch off-site Backups. Das heißt sobald eine SSH Verbindung besteht kann diese genutzt werden um mit BORG Backups dort hin zu schreiben.
Die erstellten Backups sind sogar als eigenes Filesystem mountbar.
Also das perfekte Backupsystem.
Installation (NixOS)
Die BORG Pakete sind in den NixOS Packages vorhanden und können entweder in die configarations.nix geschrieben werden und wird dann neu gebaut mit folgendem Befehl:
Rebuild
Die Pakete können auch per nix-env installiert werden:
local
nix-env -iA nixos.borgbackup
So fertig installiert und direkt einsetzbar.
Usage
Bei BORG werden für Backups Repositorys angelegt.
INIT REPO
borg init -e repokey /path/to/repo
Statt "repo" wird hier natürlich der Name des Repositorys vergeben.
Beim erstellen wird direkt das Passwort vergeben, welches man sich natürlich merken sollte, da sonst das Backup nicht mehr brauchbar wäre.
Um ein Backup zu erstellen und in das Repository zu schreiben benutzt man folgenden Befehl:
CREATE BACKUP
borg create /path/to/repo::DATE ~/Documents ~/Mail
Hier wird bei "::DATE" der Name des einzelnen Backups vergeben (empfehlenswert ist natürlich das Datum in irgendeiner Weise) und danach werden alle Ordner die gesichert werden sollen nacheinander aufgelistet. In diesem Fall "Documents" und "Mail".
Damit wäre das erste lokale Backup erstellt.
Off-Site Backups
Nun sollten Backups allerdings nicht auf der Maschine gesichert werden von der das Backup stammt. Die Gründe sollten klar sein.
Zum einen gibt es die Möglichkeit die Backups auf externe Speichermedien auszulagern, zum Andere via SSH auf Server.
Letzeres wird wie folgt gemacht. Als erstes muss natürlich das Remote-Repo angelegt werden:
REMOTE REPO ANLEGEN
borg init user@hostname:/path/to/repo
damit hat man sein Ziel-Repository angelegt.
Um nun Backups remote rauszuschreiben benutzt man:
REMOTE BACKUP
borg create user@hostname:/path/to/repo::Monday ~/src ~/Documents
Fertig.
Restore Backup
Nun gibt es ab und zu den Bedarf ein Backup wiederherstellen zu müssen.
Bei BORG gibt es zwei Möglichkeiten "mount" und "extract".
"Mount" mounted wie der Name schon sagt, das Backup als Filesystem zum wiederherstellen einzelner Files.
"Extract" extrahiert das gesamte Backup, bspw. um ein komplettes System wiederherzustellen.
Für lokale Backups:
BORG MOUNT
borg list /mnt/backup/borg_repo
borg mount /mnt/backup/borg_repo::myserver-system-2021-06-09 /mnt/borg
borg mount /mnt/backup/borg_repo /mnt/borg
BORG EXTRACT
mkdir borg_restore
cd borg_restore
borg list /mnt/backup/borg_repo
borg list /mnt/backup/borg_repo::myserver-system-2021-06-09
borg extract /mnt/backup/borg_repo::myserver-system-2021-06-09 path/to/extract
borg extract /mnt/backup/borg_repo::myserver-system-2021-06-09
Für Remote (SSH) Backups:
BORG MOUNT
borg mount ssh://borg@backup.example.org:2222/path/to/repo /mnt/borg
BORG EXTRACT
borg extract ssh://borg@backup.example.org:2222/path/to/repo
BORG bringt natürlich noch viele viele Optionen der Anpassung mit. Die gibt es in der Dokumentation (
LINK).
Für ein simples Backup sollten die oben genannten commands ausreichend sein.
Viel Spaß beim Backup!