Mein Linux-Home-Backup-Script und eine Frage
Dienstag, 22.7.2025, 07:40 > daMaxMeine Frage nach einem vernünftigen, automatisierbaren Backup wurde ja recht zahlreich beantwortet, also habe ich mich in den letzten Tagen mal daran gemacht, mir eine Lösung zum Sichern meines /home-Verzeichnis zurecht zu schustern. Der folgende Post ist nerdig, ihr seid gewarnt.
Angefangen hatte ich mit grsync, das eine grafische Oberfläche für den Kommandozeilenbefehl rsync darstellt. Beim Herumspielen fiel mir auf, dass in meinem /home sehr viele Dateien rumliegen, die ich gar nicht sichern will, also war mir schnell klar, dass ich eine Ausnahmeliste (exclude list) benötigen werde.
Tja, leider ist Grsync eben nicht so grafisch, wie ich das gerne hätte (so mit einer Baumansicht zum Aktivieren / Deaktivieren von Ordnern), außerdem lässt es sich (meines Wissens nach) nicht automatisieren, also bin ich im Laufe des Wochenendes auf eine reine Scriptlösung umgestiegen.
Alles dreht sich im Endeffekt um diesen Befehl:
rsync -axv --progress -s --exclude-from="$EXCLUDELIST" "$SOURCEDIR" "$TARGETDIR"
Grsync hätte zwar diese Flags verwendet:
rsync -r -t -x -v --progress -s --exclude-from="$EXCLUDELIST" "$SOURCEDIR" "$TARGETDIR"
aber mein Admin meinte, "axv" sei ideal, vor allem, weil meine Flags keine Symlinks mit kopieren würden, was doof sei. -a beinhaltet -rlptgoD und muss wohl perfekt sein.
Ein reines Backup alleine war mir natürlich nicht genug, ich will Logfiles haben. Und zwar rotierende, also so dass nur das allererste (vollständige) Logfile bestehen bleibt sowie sagen wir mal 20 weitere. Zusammen mit Perplexity vibete ich mir also dieses Script zusammen:
Automatisiert habe ich das per systemd mit einem Service:
und einem Timer:
Das funktioniert so weit so gut.
Frage in die Runde: könnte ich ein solches Script auch dazu verwenden, mein System zu sichern? Also einmal komplett / und dabei dann entsprechend Ordner wie /home, /var und so weiter ausnehmen? Aber wie kriege ich das im root-Kontext automatisch zum Laufen?
Da hast du was schönes zusammengebastelt. Du hast nun ein Skript, dass Inhalte von A nach B synchronisiert, so dass danach B gleich A aussieht (ohne den ausgeschlossenen Sachen) und schön rollierende Logfiles. Was ist nun aber, wenn du was aus A löscht, automatisch dein Skript anläuft und du erst in ein paar Tagen merkst, dass genau das Gelöscht doch noch gebraucht wird? Aus B ist es dann schon lange weg, da rsync synchronisiert. Allenfalls hast du in den schönen Logfiles stehen, dass es bis zum Löschtag noch vorhanden war. Ein Backup ist das nicht.
Deine Vorraussetzung war, dass dein Backup eine GUI hat. Deshalb habe ich damals nicht kommentiert. Mach es richtig. Nimm ein deduplizierendes Backup-Programm, z.B. borg backup. Das kann inkrementales Backup, kann easy parametrisiert werden, so dass es jährliche, monatliche und wöchentliche Sicherungen aufhebt (und auch alte löscht) und es verschlüsselt die Backups, so dass man sie sogar extern zu irgendeinem Hoster schieben könnte, wenn man das denn will. Und ja, borg-backup kann auch das komplette System sichern (mit Ausschluss von /dev, /proc usw.).
Um dein "Backup" oder ein anderes Backup im root-Kontext laufen zu lassen, mache es zur System-Unit. Ohne die Angabe von user= oder group= laufen diese automatisch als root. Läuft denn dein jetziger Timer und die Unit unter User-systemd? Wenn nicht, dann läuft sie ja jetzt schon als root.
Das alles spielt natürlich nur eine Rolle, wenn der angekündigte "Umstieg auf ein neues Betriebssystem" heißt, dass du bei einem Linux-artigen bleibst, denn nur dort gibt es borg-backup.