In den letzten Jahren habe ich verschiedene Backuplösungen ausprobiert. Ob es rsync, DejaDup, Borg immer war es das Selbe, dass ich nie wirklich zufrieden bzw. begeistert von der Lösung war. Sicherlich lag es auch daran, dass ich nicht wirklich mich groß umstellen wollte, bzw. ich auch manchmal zu Faul war überhaupt Backups zu machen, was natürlich sehr oft zu einem schlimmer Ergebnis geführt hat :-).
Doch jetzt habe ich für mich die Lösung gefunden. Durch einen kleinen Hinweis auf der Fedora Project Page, konnte ich das Tool meiner Träume finden:
restic
restic ist eine OpenSource Backup Lösung die im Terminal läuft. Einige Vorteile von restic:
- AES-256Bit Verschlüsselung
- Unterstützung mehrerer Schlüssel
- Unterstützung großer Cloud-Anbieter (Google, AWS…)
- Unterstützung verschiedener Protokolle
- Snapshots
- Inkrementelle Backups
Installation
Die Installation von restic ist sehr gut in der Doku beschrieben. Es gibt für alle großen Distros fertige Pakete.
Repository
restic ähnelt im Konzept und dem Aufbau der Befehlen sehr git. Deswegen ist es auch nicht verwunderlich, dass die Speicherorte für die Backups Repositorys heißen. Im folgenden, werden wir ein lokales Repositiory einrichten. Für externe Repositorys schaut bitte in der Doku für den entsprechenden Aufbau des Befehls nach.
restic init --repo /run/media/malte/Backup/SicherungenMit diesem einfachem Befehl wird uns Repository auf einer externen Festplatte eingerichtet. Nach der Eingabe des Befehls, werdet ihr nach eurem Wunschpasswort für die Repository und dessen Bestätigung gefragt. Wenn alles richtig verlaufen ist sieht es dann so aus:
[malte@FedLin ~] $ restic init --repo /run/media/malte/Backup/Sicherungen/
enter password for new repository:
enter password again:
created restic repository 2ba283f830 at /run/media/malte/Backup/Sicherungen/
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.Wir haben erfolgreich eine Repository angelegt und können nun mit dem Backupprozess beginnen.
Backup
Um ein Backup durchzuführen, müssen wir nur folgenden Befehl eingeben
restic -r /run/media/malte/Backup/Sicherungen/ backup /home/malteMit -r geben wir unsere Repository an, mit backup welcher Befehl durchgeführt werden soll und schlußendlich was man sichern soll. Nach erfolgreicher Sicherung, sieht es dann so aus:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ backup /home/malte
enter password for repository:
password is correct
using parent snapshot 5b523b51
scan [/home/malte]
scanned 3464 directories, 19166 files in 0:04
[0:10] 100.00% 16.300 GiB / 16.300 GiB 22630 / 22630 items 0 errors ETA 0:00
duration: 0:10
snapshot c8c62281 savedAllerdings bin ich davon ein Freund bestimmte Dateien nicht mit zu sichern, das wären zum Beispiel mein Papierkorb, Cache Files und einiges mehr. Da ich aber nicht alle aufführen will im Befehl mache ich das in einer Exclude Datei. Zum Glück hat auch das schon jemand gemacht: github/rubo77/rsync-homedir-excludes. Um diese Datei nutzen zu können, machen wir folgendes:
wget https://raw.githubusercontent.com/rubo77/rsync-homedir-excludes/master/rsync-homedir-excludes.txt -O /var/tmp/ignorelistUnd jetzt noch schnell den Sicherungsbefehl anpassen:
restic -r /run/media/malte/Backup/Sicherungen/ backup /home/malte --exclude-file="/var/tmp/ignorelist" --exclude="/home/malte/Downloads"Und fertig.
Snapshots
Mit dem snapshots Befehl ist es möglich die Snapshots zu verwalten:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ snapshots
enter password for repository:
password is correct
ID Date Host Tags Directory
----------------------------------------------------------------------
91c5cf74 2018-04-14 14:57:46 FedLin /home/malte
f9f83b20 2018-04-14 15:10:55 FedLin /home/malte
9d3ff71e 2018-04-14 15:36:18 FedLin /home/malte
5f093a5f 2018-04-14 16:12:05 FedLin /home/malte
92f19ae4 2018-04-14 17:24:24 FedLin /home/malte
5b523b51 2018-04-14 17:25:47 FedLin /home/malte
c8c62281 2018-04-14 18:09:01 FedLin /home/malte
----------------------------------------------------------------------
7 snapshotsUm ein Snapshot zu entfernen, ist folgender Befehl nötig:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ forget c8c62281Jedoch sind die entsprechenden Verlinkungen noch vorhanden, um diese zu löschen, wird noch der folgende Befehl benötigt:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ pruneWiederherstellen
Es gibt zwei Wege die Backups wiederherzustellen, zurück spielen oder mounten. Der einfachste Weg ist der folgende:
restic -r /run/media/malte/Backup/Sicherungen/ restore latest --target /home/malteUm einen speziellen Snapshot zurück zuspielen, muss der Befehl ein wenig angepasst werden:
restic -r /run/media/malte/Backup/Sicherungen/ restore 5b523b51 --target /home/malteUm nur bestimmte Dateien zurück zuspielen, kann man auch einfach ein Snapshot mounten:
restic -r /run/media/malte/Backup/Sicherungen/ mount /mntSchlüssel
Es ist sehr einfach die Schlüssel für die Repo zu verwalten:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ key list
enter password for repository:
password is correct
ID User Host Created
----------------------------------------------------------------------
*af7f857b malte FedLin 2018-04-14 14:57:32
----------------------------------------------------------------------Um einen neuen Schlüssel hinzuzufügen, muss man einfach nur folgenden Befehl ausführen:
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ key addUnd natürlich kann man den Schlüssel auch löschen
[malte@FedLin Blog] $ restic -r /run/media/malte/Backup/Sicherungen/ key remove af7f857b



















Framework anpassen