Hast du den Durchblick bei der Datensicherung? (Bild von Antonio Moreno Nadal, Pexels.com)
Nachdem ich schnell gemerkt habe, dass Restic mir (und für meine Aufgabe) zu komplex ist, ergab eine Suche im Internet, dass es für Restic mit Autorestic einen Wrapper gibt, wo man «einfach» alles über eine YAML-Datei einrichten kann. Das klang gut, und so habe ich Restic und Autorestic installiert und das Backup meines kleinen Homeservers eingerichtet. Konkret sichere ich mit Autorestic meine Dockerumgebung auf meinem Raspberry Pi 4 auf eine angeschlossene USB-Festplatte. Ich kann aber jederzeit auch auf ein zweites oder drittes Ziel sichern, wie zum Beispiel mein NAS.
Als Neuling war dann doch einiges an Try and Error dabei, aber dank eines grossen Durchhaltewillens und der Hilfe der KI habe ich alles eingerichtet bekommen.
Damit ich auch in einem halben Jahr noch weiss, was ich hier gemacht habe, und für alle da draussen, die auch über eine Autorestic-Anleitung froh sind, werde ich meinen Weg hier aufschreiben. Ohne Anspruch, dass das der einfachste, einzig richtige oder gar der beste Weg ist. Es ist einfach mein Weg. Wenn du Verbesserungen hast, dann bin ich aber sehr offen und freue mich über deinen Kommentar.
Also legen wir los.
Inhaltsverzeichnis:
1. USB-Festplatte einrichten
2. Autorestic & Restic installieren
3. Autorestic einrichten
4. Konfigurationsdatei einrichten
5. Erster Testlauf
6. Cronjob einrichten
7. Nützliche Befehle
1. USB-Festplatte einrichten
In meinem Fall will ich das Backup auf einer USB‑Festplatte erstellen. Diese muss ich anschliessen und sauber mounten.
Damit das Backup immer denselben Pfad findet, wird die Festplatte über ihre UUID eingebunden. Dafür benötigen wir den Befehl lsblk -f.
Die angezeigte UUID der USB-Festplatte und die entsprechende Partition (z. B. sda1) merken wir uns.
Verwende den Befehl mkfs.ext4, um die Partition zu formatieren. Achtung: Alle Daten auf der Partition werden gelöscht!
sudo mkfs.ext4 /dev/sdX1
Ersetze /dev/sdX1 mit deiner tatsächlichen Partition (z. B. /dev/sda1).
Als Nächstes erstellen wir einen Mountpoint. Dafür erstellen wir einen Ordner, in dem dann die Festplatte eingehängt wird.
sudo mkdir -p /media/backup
Jetzt, wo wir den Ordner erstellt haben, öffnen wir die Systemtabelle und passen sie an.
sudo nano /etc/fstab
Gehe dazu mit den Pfeiltasten ganz nach unten und füge diese Zeile hinzu (ersetze DEINE-NEUE-UUID durch die ID, die du dir vorher gemerkt hast):
UUID=DEINE-NEUE-UUID /media/backup ext4 defaults,nofail 0 2
(Nutze nofail, damit der Pi auch ohne Backup-Festplatte bootet.)
Den Editor kannst du mit Strg+X beenden. Wenn er fragt, ob du die Datei speichern willst, kannst du mit Y bestätigen.
Nun gibst du noch sudo mount -a ein und liest damit die neu editierte fstab-Systemtabelle ein.
Erfolgskontrolle. Wenn du jetzt df -h | grep /media/backup eingibst, solltest du deine neu eingebundene HD sehen.
In meinem Fall war es noch notwendig, dass ich die Besitzerrechte geändert habe.
sudo chown DEINEN-USERNAME:DEINEN-USERNAME /media/backup.
(USERNAME muss natürlich angepasst werden.)
2. Autorestic & Restic installieren
Nachdem unser Backupziel eingebunden ist, geht es an die Installation der Software.
Zuerst Autorestic:
curl -s https://raw.githubusercontent.com/cupcakearmy/autorestic/master/install.sh | sudo bash
Achtung: Es kann gefährlich sein, Skripte aus dem Internet direkt als root auszuführen.
Dann Restic:
sudo apt update && sudo apt install restic -y
Nach der Installation folgt der Funktionstest. Also überprüfen wir nun, ob beide Programme einsatzbereit sind:
autorestic --version
restic version
Um später das Backup speichern zu können, müssen wir unser Backupziel initialisieren. Das machen wir mit:
autorestic exec -b usb-hdd -- init
3. Autorestic einrichten
Jetzt können wir uns daran machen, Autorestic nach unseren Bedürfnissen einzurichten. Als Erstes erstellen wir dafür eine Konfigurationsdatei.
sudo touch /home/DEINEN-USERNAME/.autorestic.yml
Natürlich musst du DEINEN USERNAME dabei anpassen.
Falls du die Konfigurationsdatei wie ich lieber an einem anderen Ort liegen hast, musst du die Datei dann einfach ins Home-Verzeichnis verknüpfen.
ln -s /DEIN/PERSOENLICHER/PFAD/autorestic.yml /home/DEINEN-USERNAME/.autorestic.yml
Neben der Konfigurationsdatei wollen wir noch eine Log-Datei erstellen.
sudo touch /home/DEINEN-USERNAME/autorestic.log
Und stellen gerade noch die richtigen Rechte ein
sudo chmod 666 /home/DEINEN-USERNAME/autorestic.log
Und damit die Log-Datei nicht ins Unendliche wächst, definieren wir noch, dass Einträge nur vier Wochen behalten werden sollen. Dafür öffnen wir die lograte.d/autorestic Datei:
sudo nano /etc/logrotate.d/autorestic
Und geben hier Folgendes ein:
/home/DEINEN-USERNAME/autorestic.log{
weekly
rotate 4
compress
missingok
notifempty
copytruncate
}
4. Konfigurationsdatei einrichten
Jetzt ist es an der Zeit, unsere Konfigurationsdatei einzurichten. Wir öffnen die Datei mit:
nano /home/DEINEN-USERNAME/.autorestic.yml
Und geben jetzt an, was wohin gesichert werden soll. Am einfachsten ist es, wenn ich dir einfach mal einen Auszug aus meiner autorestic.yml zeige. Ich habe versucht, mit vielen Kommentaren dir alles näherzubringen.
version: 2
global:
forget:
keep-last: 3 # Anzahl Bakups vom aktuellen Tag bestehen bleiben sollen.
keep-daily: 7 # Anzahl Tage je ein Backup bestehen bleiben soll.
keep-weekly: 4 # Anzahl Wochen je ein Backup bestehen bleiben soll.
prune: {} # Der Befehl alle Backups die ausserhalb der keep-Regeln liegen zu löschen.
# Damit wir auch eine möglichst informative Logdatei haben, brauchen wir diesen nächsten Abschnitt.
# Bitte ändere jeweils auch noch diese Zeile /home/DEINEN-USERNAME/autorestic.log
logging: &log_status
prevalidate:
- echo " " >> /home/DEINEN-USERNAME/autorestic.log
- echo "$(date '+%Y-%m-%d %H:%M:%S') - START SICHERUNG - ${AUTORESTIC_LOCATION}" >> /home/DEINEN-USERNAME/autorestic.log
success:
- >
echo " [Dateien] Neu: ${AUTORESTIC_FILES_ADDED_0} | Geändert: ${AUTORESTIC_FILES_CHANGED_0} | Unverändert: ${AUTORESTIC_FILES_UNMODIFIED_0}" >> /home/DEINEN-USERNAME/autorestic.log
- >
echo " [Ordner ] Neu: ${AUTORESTIC_DIRS_ADDED_0} | Geändert: ${AUTORESTIC_DIRS_CHANGED_0} | Unverändert: ${AUTORESTIC_DIRS_UNMODIFIED_0}" >> /home/DEINEN-USERNAME/autorestic.log
- >
echo " [Daten ] Zuwachs: ${AUTORESTIC_ADDED_SIZE_0} | Total: ${AUTORESTIC_PROCESSED_SIZE_0} (${AUTORESTIC_PROCESSED_FILES_0} Files)" >> /home/DEINEN-USERNAME/autorestic.log
- >
echo "SICHERUNG IN ${AUTORESTIC_PROCESSED_DURATION_0} ERFOLGREICH (Parent ID: ${AUTORESTIC_PARENT_SNAPSHOT_ID_0} | ID: ${AUTORESTIC_SNAPSHOT_ID_0})" >> /home/DEINEN-USERNAME/autorestic.log
failure:
- >
echo "[!][!][!] ACHTUNG FEHLER - ${AUTORESTIC_LOCATION} $(date '+%Y-%m-%d %H:%M:%S') | (Parent ID: ${AUTORESTIC_PARENT_SNAPSHOT_ID_0} | ID: ${AUTORESTIC_SNAPSHOT_ID_0}) [!][!][!]" >> /home/DEINEN-USERNAME/autorestic.log
backends:
usb-hdd:
type: local
path: /media/backup/restic-repo # Hier geben wir das Ziel an.
key: "SUPER-GEHEIMES-PASSWORT" # Hier unbedingt ein super sicheres und langes Passwort eingeben
locations:
calibre-web: # Vergib deiner Quelle einen eindeutigen Namen
from: /MEIN-PFAD/Calibre-web # Hier gibst du den genauen Pfad zum Ordner, den du sichern möchtest ein.
to: usb-hdd
hooks:
<<: *log_status # Hier fügen wir den ganzen Abschnitt für die Logdatei von oben ein.
before:
- docker stop calibre-web # Docker Container wird vor dem Backup gestoppt, dafür muss der genaue Containername eingegeben werden.
after:
- docker start calibre-web # Docker Container wird nach dem Backup gestartet
gotosocial:
from: /MEIN-PFAD/GoToSocial
to: usb-hdd
options:
backup:
exclude: # Manchmal ist es sinnvolle Ordner vom Bakup auszuschliessen
- "storage/*" # Ignoriert alles INNERHALB von storage
- "!storage/sqlite.db*" # Erlaubt dann innerhalb von storage folgende Dateien sqlite.db, sqlite.db-shm und sqlite.db-wal
hooks:
<<: *log_status
before:
- docker stop gotosocial
after:
- docker start gotosocial
miniflux:
from: /MEIN-PFAD/Miniflux
to: usb-hdd
hooks:
<<: *log_status
before:
- docker stop miniflux # Du kannst mehrere Docker Container stoppen lassen
- docker stop miniflux-db # Führe sie einfach untereinander auf.
after:
- docker start miniflux-db # Zuerst die Datenbank starten
- sleep 5 # Optional aber manchmal ist eine kurze Pause, damit die Datenbank Zeit zum Starten hat, sinnvoll.
- docker start miniflux # Dann die Anwendung
caddy:
from: /MEIN-PFAD/Caddy
to: usb-hdd
hooks: # Diesen Container können wir sichern ohne ihn extra zu stoppen.
<<: *log_status
# Alle weiteren Quellen führst du hier unterhalb auf.
5. Erster Testlauf
Als Erstes machen wir einfach mal einen Check, also einen Testlauf, bei dem noch nichts gesichert wird.
autorestic check
Wenn das Ergebnis gut aussieht, dann können wir uns an einen ersten scharfen Testlauf wagen.
Du kannst das Backup gleich für alle Quellen durchlaufen lassen oder erst mal für eine oder mehrere einzelne Quellen. Dazu benötigst du die eindeutigen Namen der Quellen aus der autorestic.yml.
Alles:
sudo autorestic -c /home/DEINEN-USERNAME/.autorestic.yml backup --all > /dev/null 2>&1
Ein Tasks:
sudo autorestic -c /home/DEINEN-USERNAME/.autorestic.yml backup -l calibre-web > /dev/null 2>&1
Mehrere Tasks:
sudo autorestic -c /home/DEINEN-USERNAME/.autorestic.yml backup -l calibre-web -l caddy > /dev/null 2>&1
Wenn du während des Testlaufs schon mal die Log-Einträge «live» mitverfolgen willst, kannst du das mit diesem Befehl tun.
tail -f /home/DEINEN-USERNAME/autorestic.log!`
6. Cronjob einrichten
Jede Nacht um 3 Uhr soll das Backup laufen. Damit der Eintrag im Crontab kurz bleibt, richten wir dazu ein eigenes Skript ein.
Datei erstellen:
sudo nano /home/DEINEN-USERNAME/backup-run.sh
Und dann diesen Inhalt einfügen:
#!/bin/bash
# Definitionen
LOGFILE="/home/DEINEN-USERNAME/autorestic.log"
CONFIG="/home/DEINEN-USERNAME/.autorestic.yml"
AUTORESTIC="/usr/local/bin/autorestic"
# Start-Markierung im Log
echo -e "\n================ START GESAMT-BACKUP $(date '+%Y-%m-%d %H:%M:%S') ================" >> $LOGFILE
# Autorestic ausführen
$AUTORESTIC -c $CONFIG backup --all > /dev/null 2>&1
# Ende-Markierung im Log
echo -e "================ ENDE GESAMT-BACKUP $(date '+%Y-%m-%d %H:%M:%S') ================\n" >> $LOGFILE
Dieses Skript müssen wir nun mit diesem Befehl noch ausführbar machen.
sudo chmod +x /home/DEINEN-USERNAME/backup-run.sh
Jetzt können wir einfach das soeben erstellte Skript in Crontab einfügen. Dafür öffnen wir zuerst die Crontab-Datei.
sudo crontab -e
Jetzt können wir zuunterst diese Zeile einfügen:
0 3 * * * /home/DEINEN-USERNAME/backup-run.sh
Den Editor kannst du wieder mit Strg+X beenden. Wenn er fragt, ob du die Datei speichern willst, kannst du mit Y bestätigen.
Mit sudo crontab -l kannst du dir die soeben gespeicherte Datei anschauen und kontrollieren, ob auch alles passt.
Wenn du das Skript einmal manuell starten möchtest, also ausserhalb der festgelegten Zeit, kannst du das mit dieser Eingabe erledigen.
sudo /home/DEINEN-USERNAME/backup-run.sh
7. Nützliche Befehle
Nach Daten im Backup suchen. Dazu benötigst du wieder die eindeutigen Namen der Quellen aus der autorestic.yml.
sudo autorestic -c /home/DEINEN-USERNAME/.autorestic.yml exec -l gotosocial – ls latest
Speicherplatz auf der HD kontrollieren
df -h /media/backup
HD auf Fehler überprüfen
sudo autorestic -c /home/DEINEN-USERNAME/.autorestic.yml exec -b usb-hdd – check
Alle alten Sicherungen löschen
sudo autorestic forget --all --prune
Achtung! Es werden die keep Einstellungen der autorestic.yml angewendet.
Ich hoffe, dir mit dieser Anleitung eine kleine Hilfestellung geben zu können, und wünsche dir gutes Gelingen beim Einrichten deiner Datensicherung mit Autorestic.
Kommentare: 0