Aktuell überlege ich, unsere Sicherungen umzustellen auf RESTIC.
Bevor ich die Umstellung vornehme, brauche ich etwas Erfahrung im
Umgang mit RESTIC. Deshalb hier ein kleiner einführender
Artikel.
Tests mit Ubuntu-20.04 und Restic-0.12.1.
TLDR:
Die Einrichtung von RESTIC iist sehr einfach
Die Erstsicherung dauert etwas (bei mir bei grob 80GB etwa 30 Minuten)
Die Folgesicherungen gehen zügig (bei mir grob 2 Minuten)
Vorbemerkungen
Meine Tests mache ich mit dem Benutzer “uli”.
Ich verwende zur Sicherung ein externes Speichermedium.
Dieses hat die Bezeichnung “uli-0195”.
12
DP_USER=uli
DP_DRIVE=uli-0195
Für Tests kann man meiner Ansicht nach durchaus übliche USB-Sticks verwenden.
Mit ihnen kann man sich mit der grundsätzlichen Bedienung von RESTIC
vertraut machen. Für zuverlässige Sicherungen sind USB-Sticks
eher nicht geeignet, dafür gehen sie zu oft kaputt.
Üblicherweise verwende ich verschlüsselte externe Medien.
Die Sicherungen mit RESTIC sind dann quasi doppelt verschlüsselt:
Einmal durch die Medien-Verschlüsselung und dann nochmal durch
die in RESTIC eingebaute Verschlüsselung.
Herunterladen und installieren
RESTIC kann entweder als Binärdatei heruntergeladen und installiert werden
oder als DP-Paket für Ubuntu. Das DP-Paket ist nur aus dem DP-Netz heraus verfügbar!
DP-Paket
1234567891011121314151617181920
$ sudo apt install -y restic
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
restic
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 10,3 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 30,5 MB Plattenplatz zusätzlich benutzt.
Holen:1 https://dprepo.daemons-point.com/dprepo/ubuntu 20.04_x86_64/ restic 0.12.1-2dp06~focal1 [10,3 MB]Es wurden 10,3 MB in 2 s geholt (6.209 kB/s).
Vormals nicht ausgewähltes Paket restic wird gewählt.
(Lese Datenbank ... 257506 Dateien und Verzeichnisse sind derzeit installiert.)Vorbereitung zum Entpacken von .../restic_0.12.1-2dp06~focal1_amd64.deb ...
Entpacken von restic (0.12.1-2dp06~focal1) ...
restic (0.12.1-2dp06~focal1) wird eingerichtet ...
Trigger für man-db (2.9.1-1) werden verarbeitet ...
$ restic version
restic 0.12.1 compiled with go1.13.8 on linux/amd64
… und eingebunden: ls "/media/${DP_USER}/${DP_DRIVE}" –> klappt!
Medium initialisieren: restic init --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"
Kennwort muß 2x eingegeben werden!
Merken!
Für meine Tests verwende ich das Kennwort “uli-kw”
Erste Sicherung erstellen
Erste Sicherung meines kompletten Home-Verzeichnisses:
12345678
uli:~$ time restic backup --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}" --exclude-caches --exclude=".cache" --exclude="Cache*" --exclude="Downloads" --exclude=".m2*" --exclude=".gradle*" --exclude="*.log" .
enter password for repository:
repository 3c87d0bd opened successfully, password is correct
created new cache in /home/uli/.cache/restic
no parent snapshot found, will read all files
[19:27] 56.68% 712144 files 40.320 GiB, total 1167633 files 71.130 GiB, 0 errors ETA 14:52
...
# Dauert etwa 35 Minuten (19:27 + 14:52)
Nach Fertigstellung der Ausführung:
12345678910111213141516
uli:~$ time restic backup --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}" --exclude-caches --exclude=".cache" --exclude="Cache*" --exclude="Downloads" --exclude=".m2*" --exclude=".gradle*" --exclude="*.log" .
enter password for repository:
repository 3c87d0bd opened successfully, password is correct
created new cache in /home/uli/.cache/restic
no parent snapshot found, will read all files
Files: 1167634 new, 0 changed, 0 unmodified
Dirs: 252425 new, 0 changed, 0 unmodified
Added to the repo: 57.334 GiB
processed 1167634 files, 71.137 GiB in 31:34
snapshot 2c9c8bc0 saved
real 31m38,701s
user 9m47,324s
sys 4m13,129s
Bei der ersten Sicherung werden alle Dateien gesichtert. Dementsprechend dauert diese Sicherung relativ lange!
Folgesicherung
Erneute Sicherung grob 1 Stunde später:
1234
uli:~$ time restic backup --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}" --exclude-caches --exclude=".cache" --exclude="Cache*" --exclude="Downloads" --exclude=".m2*" --exclude=".gradle*" --exclude="*.log" .
enter password for repository:
...
# Dauert etwa 2 Minuten
Nach Fertigstellung der Ausführung:
12345678910111213141516
uli:~$ time restic backup --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}" --exclude-caches --exclude=".cache" --exclude="Cache*" --exclude="Downloads" --exclude=".m2*" --exclude=".gradle*" --exclude="*.log" .
enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
using parent snapshot 2c9c8bc0
[0:28] 414853 files 29.702 GiB, total 995410 files 61.361 GiB, 0 errors
Files: 14 new, 53 changed, 1167569 unmodified
Dirs: 1 new, 56 changed, 252369 unmodified
Added to the repo: 40.397 MiB
processed 1167636 files, 71.131 GiB in 1:16
snapshot 9bcd9d85 saved
real 1m20,328s
user 1m57,693s
sys 0m25,038s
Tagessicherungen
In den nächsten Tagen werde ich regelmässig weitere
Sicherungen erstellen!
Sicherungen sichten
Leeres Sicherungsmedium
123
uli:~$ restic snapshots --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
Sicherungsmedium mit einer Sicherung
12345678
uli:~$ restic snapshots --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
ID Time Host Tags Paths
----------------------------------------------------------------
2c9c8bc0 2021-11-14 14:53:18 ulicsl /home/uli
----------------------------------------------------------------
1 snapshots
Sicherungsmedium mit vielen Sicherungen
1234567891011
uli:~$ restic snapshots --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
ID Time Host Tags Paths
----------------------------------------------------------------
2c9c8bc0 2021-11-14 14:53:18 ulicsl /home/uli
68b329d2 2021-11-14 16:12:34 ulicsl /home/uli
893e3409 2021-11-15 06:03:57 ulicsl /home/uli
...
----------------------------------------------------------------
10 snapshots
Gesicherte Dateien zurückspielen
Meiner aktuellen Ansicht nach geht das Zurückspielen am einfachsten
über das Einbinden der Sicherungen. Dazu brauchst Du zwei Terminalfenster:
Fenster 1: Einbindefenster
Fenster 2: Recherchefenster
Einbindefenster
12345678910
uli:~$ mkdir mnt-restic
uli:~$ restic mnt mnt-restic --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
Now serving the repository at mnt-restic/
When finished, quit with Ctrl-c or umount the mountpoint.
# Nach Ende der Recherchen...Ctrl-c ^C
uli:~$ rmdir mnt-restic
Recherchefenster
Im Recherchefenster können die Sicherungen durchsucht werden:
123456
uli:~$ ls mnt-restic
hosts ids snapshots tags
uli:~$ ls mnt-restic/snapshots
2021-11-14T14:53:18+01:00 2021-11-14T15:32:40+01:00 2021-11-15T06:26:13+01:00 latest
uli:~$ ls mnt-restic/snapshots/latest
# Inhalt der letzten Sicherung wird angezeigt
Die oberste Ebene hilft beim Suchen:
snapshots: Für jeden Sicherungslauf ein Datum –> sinnvoll für das Rückspielen nach Datum
hosts: Für jeden Sicherungsrechner ein Verzeichnis, darunter dann Datum, etc
Ich denke, man findet sich da recht einfach zurecht!
Audit-Kennworte vergeben
Vorhandene Kennworte auflisten
Sicherungsmedium mit einem Kennwort:
1234567
uli:~$ restic key list --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
ID User Host Created
--------------------------------------------
*528d538b uli ulicsl 2021-11-14 14:52:52
--------------------------------------------
Zusätzliches Kennwort vergeben
Wir vergeben immer ein zusätzliches Kennwort, das wir ausdrucken
und an zentraler Stelle ablegen, damit “notfalls” auch jemand anders
als ich Zugriff auf die Sicherungen hat, bspw. um zu Sichten, ob die
Sicherungen regelmässig erfolgen:
123456
uli:~$ restic key add --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"enter password for repository:
repository 8e8d2ec7 opened successfully, password is correct
enter new password:
enter password again:
saved new key as <Key of uli@ulicsl, created on 2021-11-15 06:40:54.754677511 +0100 CET m=+14.738183040>
Für meine Tests habe ich hier das Kennwort “uli-audit” verwendet!
Hier die Kennwortliste:
1234567
uli:~$ restic key list --repo "/media/${DP_USER}/${DP_DRIVE}/restic-${DP_USER}"repository 8e8d2ec7 opened successfully, password is correct
ID User Host Created
--------------------------------------------
97e69364 uli ulicsl 2021-11-15 06:40:54
*528d538b uli ulicsl 2021-11-14 14:52:52
--------------------------------------------