staging.inyokaproject.org

Restic

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Restic 🇬🇧 ist eine Terminal basierte Datensicherungssoftware, welche die Backups automatisch mit AES-256 verschlüsselt, es arbeitet außerdem inkrementell und deduplizierend.

Alle Daten werden in einem Restic-Repository gespeichert. In einem Repository können Daten verschiedener Typen gespeichert werden, die später anhand einer ID angefordert werden können. Diese sogenannte "Speicher-ID" ist der SHA-256-Hash des Inhalts einer Datei. Alle Dateien in einem Repository werden nur einmal geschrieben und danach nie mehr geändert. Auf diese Weise können mehrere Clients gleichzeitig auf das Repository zugreifen und sogar darauf schreiben. Nur der Bereinigungsvorgang entfernt Daten aus dem Repository.

Des Weiteren lassen sich diese sehr gut in fast allen Clouds abspeichern, z.B. durch die Einbindung von rclone. Auch ist dieses Programm sehr schnell, wenn der erste Backupdurchlauf gemacht wurde, da nur geänderte Daten beim erneuten Backup/Snapshot geschrieben werden. So lassen sich zum Beispiel auch sehr große Dateien, wie bei einer virtuellen Maschine, auch bei kleinen Änderungen schnell sichern ohne wiederum die komplette Datei hochladen zu müssen.

Die Möglichkeit zum Einbinden eines Snapshots ist ein weiteres hilfreiches Feature, welches nicht ungenannt bleiben sollte.

Zur Überprüfung der Daten auf mögliche Fehler steht ein Kommando (check) zur Verfügung.

Als Backup-Speicherplatz werden folgende unterstützt:

Achtung!

Wer das Passwort zu seinem Backup vergisst, kann das Backup nicht mehr nutzen.

Installation

Restic kann direkt aus den Quellen installiert werden.

  • restic (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install restic 

Oder mit apturl installieren, Link: apt://restic

Um die Möglichkeit des Einhängens von Sicherungen/Snapshots zu verwenden wird FUSE verwendet. Das Paket muss also installiert sein.

Zur Nutzung weiterer Clouddienste wie z.B. Owncloud, Webdav etc. wird das rclone-Paket zusätzlich benötigt.

  • rclone (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install rclone 

Oder mit apturl installieren, Link: apt://rclone

Das Programm restic sollte daraufhin aktualisiert werden mit

sudo restic self-update 

Bedienung

restic UNTERKOMMANDO PARAMETER -r PFAD-ZUM-REPO 

Bei der Neuerstellung eines neuen Backups, wird PFAD-ZUM-REPO zum Pfad zu einem leeren Ordner.

Einige Unterkommandos sind:

Untercommands
Untercommand Bedeutung
init Erstellen eines neuen Backup-Speicherplatzes
backup Erstellt ein neues Backup
diff Zeigt die Unterschiede zwischen zwei verschiedenen Backups.
snapshots Zeigt alle Snapshots an
self-update führt ein Softwareupdate von restic durch, sudo restic self-update
check Überprüft den Index eines Backups
restore Für das Einspielen eines Backups
forget Löscht einen Snapshot aus dem Index
prune löscht unreferenzierte Daten aus dem Index.
key verwaltet die Nutzerschlüssel für das Login
mount Ein Backup mounten.
cat Wie cat nur im Backup
list Listet alle Objekte im Repo auf
ls Listet alle Dateien auf
unlock Löst alle Locks auf.
ÜbersichtParameter
Parameter synonym Funktion
--repo -r Gibt den Speicherort eines Backups an (Hierbei können auch SFTP usw. angegeben werden)
--verbose -v Gibt genauere Detailausgaben aus.
--exclude Was soll ausgeschlossen werden aus dem Backup?
--iexclude Wie --exlude aber unter Ausschluss von Pfaden
--exclude-caches Schließt Ordner mit einer gewissen Datei im Inneren aus.
--exclude-file= Gibt eine Datei mit auszuschließenden Dateien/Ordnern an
--include-file Gibt eine Datei mit beinhaltenden Dateien/Ordnern an
--exclude-if-present Schließt einen Ordner aufgrund der Präsenz einer Datei aus (mit der Möglichkeit, den Header etc. zu bestimmen)
--target Ziel vom Entpacken.
--prune Löscht beim Vergessen auch gleich noch die nicht mehr referenzierten Daten.
--help Gibt zu jedem Unterkommando noch eine erweiterte Übersicht über die verfügbaren Optionen

Ausgewählte (wichtige) Paramter für die Subcomands =

Diese Liste hier ist nicht umfassend, bietet aber einen kurzen Überblick über alle Funktionen.

Parameter
Flag synonym Unterkommando Funktion
--force -f backup Liest alle Verzeichnisse neu ein, und geht davon aus, dass noch nichts im Repository ist (Deduplizierung findet trotzdem statt).
--host HOSTNAME -H HOSTNAME backup Lässt den Hostnamen automatisch setzen
--one-file-system -x backup Restic bleibt im selben Dateisystem (vgl. https://rclone.org/local/ 🇬🇧)
--read-data check Liest auch alle Daten ein und prüft diese
--read-data-subset n/m check Liest den n-ten Teil von m Teilen ein und prüft diese
--dry-run -n forget Sage was gemacht hätte werden sollen.

Parameter für das automatische Löschen von Snapshots

Parameter
Parameter Beschreibung
--keep-last n Die letzten n snapshots behalten.
--keep-hourly n Für die letzten n Stunden nur den Letzten behalten.
--keep-daily n Für die letzten n Tage nur den letzten pro Tag behalten.
--keep-weekly n Für die letzten n Wochen nur den letzten pro Woche behalten.
--keep-monthly n Für die letzten n Monate nur den letzten pro Monat behalten
--keep-yearly n Für die letzten n Jahre nur den letzten pro Jahr behalten
--keep-within ZEITSPANNE Behaltet alle Snapshots innerhalb der angegebenen Zeitspanne

Ein Beispiel direkt aus der englischen Doku: Bei täglichen Backups über 100 Jahre würde der Befehl:

restic -r /PFAD/ZUM/BACKUP forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 75 --prune 

Die letzten sieben Backups, dann die vier Wochen davor (die erste Woche ist bereits durch den Tag bestimmt), dann 11 oder 12 am letzten Tag des Monates (in Abhängigkeit der Ausführungsdatums), und daraufhin noch 75 Jahre einen pro Jahr. Der Rest würde gelöscht werden.

Beispiele

Repository erstellen

Durch den Befehl init wird im angegebenen Backupordnerpfad ein neues Repository erstellt und ein Passwort zur Eingabe abgefragt.

  1. Local:

    restic init -r /PFAD/ZUM/BACKUPORDNER 
  2. SFTP

    restic -r sftp:user@host:/PFAD/ZUM/BACKUPORDNER init 
  3. rclone

    restic -r rclone:REMOTE-NAME:/PFAD/AUF/REMOTE/BACKUPORDNER init 
  4. Weitere ausführliche Beispiele können unter https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html 🇬🇧 abgerufen werden. (Z.B. für Amazon S3, Rest-Server, Backblaze B2 usw. )

Backup erstellen

Ein Backup kann ganz einfach mithilfe des folgenden Befehls erstellt werden:

restic -r /PFAD/ZUM/BACKUPORDNER backup /home /root 

Hierbei ist anzumerken, dass /home und /root die zu speichernden Ornder sind. Es lassen sich viel mehr hinzufügen.

Mit einem zusätzlichen --verbose sieht man mehr Details beim Backup erstellen.

Beim erstmaligen Ausführen von backup erfolgt eine Meldung, weil noch kein Snapshot vorhanden ist mit welchem die Daten verglichen werden könnten.

Es können auch durch das Anhängen von den Parametern --files-from /PFAD/ZUR/DATEI/include.txt (Achtung --files-from OHNE = ) oder --exclude-file=/PFAD/ZUR/DATEI/exclude.txt spezifischere Angaben gemacht werden, was oder was nicht gesichert werden soll. Eine gute Übersicht findet sich auch hier bei https://restic.readthedocs.io/en/latest/040_backup.html 🇬🇧.

Das ganze sieht dann zum Beispiel für ein eingerichtetes rclone so aus (die Textdateien können natürlich auch anders heißen):

restic -r rclone:BackupWebdav:ORDNERNAME backup --verbose --files-from /PFAD/ZUR/DATEI/include.txt --exclude-file=/PFAD/ZUR/DATEI/exclude.txt 

Der Inhalt einer exclude.txt könnte wie folgt aussehen, absolute Pfade verwenden:

1
2
3
4
5
6
#ignoriert hier alle ISO-Dateien
*.iso
#ignoriert das Verzeichnis Videos, samt Unterverzeichnisse
home/user/Videos/
#ignoriert das Verzeichnis Trash
home/user/.local/share/Trash/

Snapshots/Sicherungen anzeigen

Die vorhandenen Backups bzw. Snapshots können so aufgelistet werden:

restic -r /PFAD/ZUM/BACKUPORDNER snapshots 

Hier werden die vorhandenen Backups/Snapshosts aufgelistet, die angegebene IDs können dann z.B. zur Wiederherstellung oder zur Überprüfung verwendet werden.

Ein Ausgabebeispiel dazu:

enter password for repository: 
repository 0e566285 opened successfully, password is correct
ID        Time                 Host          Tags        Paths
------------------------------------------------------------------------------
88a5b52c  2020-12-22 15:14:51  test                      /home/test/.config
                                                         /home/test/.putty
                                                         /home/test/.vnc
                                                         /home/test/Dokumente

8f27e3ab  2020-12-23 14:08:35  test                      /home/test/.config
                                                         /home/test/.putty
                                                         /home/test/.vnc
                                                         /home/test/Dokumente
                                                       
 
------------------------------------------------------------------------------
2 snapshots

Backup einspielen

Mit dem folgenden Befehl wird ein Snapshot mit der ID 8f27e3ab nach /old/ zurückgespielt:

restic -r /PFAD/ZUM/BACKUPORDNER restore 8f27e3ab --target /old 

Mounten eines Backups

Mit dem Folgenden Befehl wird ein Backup gemounted wie ein USB-Stick. Allerdings ohne Schreibrechte, es können nur Daten gelesen oder kopiert, aber nicht verändert werden. Es ist so möglich, sich durch alle vorhandenen Snapshots zu bewegen.

mkdir /mnt/backup
restic -r /PFAD/ZUM/BACKUPORDNER mount /mnt/backup 

Weitere nützliche Beispiele

  1. Snapshots vergleichen:

    restic -r /PFAD/ZUM/BACKUP/ORDNER diff SNAPSHOTID1 SNAPSHOTID2 
  2. Alle Snapshots anschauen, welche /home auf dem Host melcoox beinhalten:

    restic -r /PFAD/ZUM/BACKUP snaphosts --path=`/home` --host melcoox 

  3. Index prüfen:

    restic -r /PFAD/ZUM/BACKUP check 

  4. Index und Inhalt prüfen (Wer --read-data durch --read-data-subset=X/Y austauscht prüft den X-ten Teil von Y teilen. (Wobei gilt: X<=Y)

    restic -r /PFAD/ZUM/BACKUP check --read-data 
  5. Snapshot vergessen und Daten löschen:

    restic -r /PFAD/ZUM/BACKUP forget 564684b --prune 
  6. Schlüssel Optionen (list = anzeigen, add = Hinzufügen, remove = Entfernen, passwd = Password ändern) :

    restic -r /PFAD/ZUM/BACKUP key list 

Diese Revision wurde am 17. Oktober 2022 17:19 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Sicherheit, Datensicherung