Restic - Einen ROCKPro64 als Datengrab benutzen
-
Idee
Wir wollen Daten von unserem Haupt-PC auf einen ROCKPro64 sichern. Da unser Haupt-PC komplett verschlüsselt ist, wäre es dumm die Backups im Klartext abzulegen. Also muss die ganze Sache verschlüsselt erfolgen. Und da kommt denn Restic ins Spiel. Das Tool sichert die Daten und legt sie verschlüsselt ab. Damit der Datentransport sicher ist, nutzen wir SFTP für den Verbindungsaufbau. Sollte ausreichend sicher sein
Das geht natürlich nicht nur mit einem ROCKPro64, sondern auch mit einem RaspberryPi, BananaPi, normaler Server usw. Ich teste das nur mal um zu schauen, ob auf dem ROCKPro64 irgendwelche Fehler auftauchen.
Das war jetzt das grobe Softwarekonzept.
Hardware
- Mein Haupt-PC
- ROCKPro64 2GB
- Betriebssystem SSD an USB3 (mit aktivem HUB)
- PCIe SATA Adapter mit 1TB HDD (Datengrab)
Software
Eingesetztes Betriebssystem auf dem ROCKPro64
rock64@rockpro64v2_1:~$ uname -a Linux rockpro64v2_1 4.4.132-1075-rockchip-ayufan-ga83beded8524 #1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Nicht ganz aktuell
Eingesetztes Betriebssystem Haupt-PC
frank@frank-MS-7A34 ~ $ uname -a Linux frank-MS-7A34 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Ein Linux Mint Cinnamon, das muss auch mal aktualisiert werden. Da trifft sich das mit der Datensicherung ja ganz gut.
Was brauchen wir an Tools?
- golang
- restic
Kurze Erklärung, Restic basiert auf der Programmiersprache Go. Damit wir Restic nutzen können, müssen wir uns das Programm bauen und dazu brauchen wir Go.
Installation Go
sudo apt-get install golang
Kontrolle
rock64@rockpro64v2_1:~$ go version go version go1.10.1 linux/arm64
Damit haben wir schon mal die Programmiersprache Go auf der Kiste.
Installation restic
git clone https://github.com/restic/restic cd restic go run build.go sudo cp restic /usr/bin
Erklärung:
- Wir laden das Repository von github
- Wir wechseln in das Verzeichnis
- Wir bauen mit go die Anwendung restic
- Wir kopieren restic ins Verzeichnis /usr/bin
Testen ob Restic läuft
rock64@rockpro64v2_1:/$ restic version restic 0.9.2 (v0.9.2-34-g5a25ad19) compiled with go1.10.1 on linux/arm64
Prima, so weit funktioniert alles.
Zur Erinnerung, ich möchte das Home-Verzeichnis meines Haupt-PCs auf dem ROCKPro64 sichern.
SSH
Wir brauchen einen passwortlosen Zugriff auf den ROCKPro64. Ich gehe hier nicht so intensiv darauf ein, dazu gibt es viele andere Seiten im Netz.
Wir kopieren den Key vom User root auf den ROCKPro64
Wenn ihr noch keinen Key erzeugt habt, dann jetztsudo su ssh-keygen
Den erzeugten Key dann auf den ROCKPro64 kopieren.
ssh-copy-id -i /root/.ssh/id_rsa.pub rock64@[IP RockPro64]
Nach dem erfolgten Kopieren, muss man sich jetzt ohne Passwort einloggen können.
ssh rock64@[IP RockPro]
Wenn das klappt, ist alles bereit um mit Restic weiter zu machen.
Restic
Backup initialisieren!
frank@frank-MS-7A34 ~ $ restic -r sftp:rock64@IP:/home/rock64/backup init enter password for new repository: enter password again: created restic repository 829d34fe54 at sftp:rock64@IP:/home/rock64/backup Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
Unter /home/rock64/backup soll Restic die Daten ablegen. Man wird dazu nach einem Passwort gefragt, das ist extrem wichtig, weil damit die Daten verschlüsselt werden. Wenn man das vergisst, sind die Daten weg! Also, gut merken!!
Backup anlegen
frank@frank-MS-7A34 ~ $ sudo restic -r sftp:rock64@IP:/home/rock64/backup backup /home/frank --exclude={/Virtual*} [sudo] Passwort für frank: The authenticity of host 'IP (IP)' can't be established. ECDSA key fingerprint is SHA256:OcOCxxxxxxxxxxxxxxxxxxxxxRevLyh4w. Are you sure you want to continue connecting (yes/no)? yes subprocess ssh: Warning: Permanently added 'IP' (ECDSA) to the list of known hosts. rock64@IP's password: enter password for repository: password is correct found 3 old cache directories in /home/frank/.cache/restic, pass --cleanup-cache to remove them scan [/home/frank] scanned 15965 directories, 158483 files in 0:01 [22:27] 100.00% 111.352 GiB / 111.349 GiB 174454 / 174448 items 0 errors ETA 0:00 duration: 22:27 snapshot 073b7cb4 saved
Was passiert hier?
Ich möchte das Verzeichnis /home/frank sichern. Habe aber einige Instanzen von Virtual Box, die ich aktuell nicht mitsichern möchte.
Das Passwort für den User frank wird abgefragt. Dann das Paswort für den ROCKPro64. Dann wird der SSH Key der Liste der bekannten Geräte hinzugefügt. Warum? Ich hatte vorher als User frank getestet, habe aber einige Zugriffsverletzungen bekommen.error for /home/frank/.cache/dconf: open /home/frank/.cache/dconf: permission denied error for /home/frank/.gvfs: open /home/frank/.gvfs: permission denied
Ok, dann als Chef
Dann fragt Restic nach dem Passwort das ihr hoffentlich noch wisst Jetzt fängt Restic an zu arbeiten. Als erstes räumt es ein wenig auf. Danach werden 111GB gesichert. Warum jetzt Restic? Zum einen ist es verschlüsselt und zum anderen wird bei dem nächsten Aufruf extrem effektiv gespeichert. Beispiel:
frank-MS-7A34 home # restic -r sftp:rock64@192.168.3.207:/home/rock64/backup backup /home/frank --exclude={/Virtual*} enter password for repository: password is correct using parent snapshot 073b7cb4 scan [/home/frank] scanned 16212 directories, 159277 files in 0:01 [0:16] 100.00% 111.494 GiB / 111.494 GiB 175491 / 175489 items 0 errors ETA 0:00 duration: 0:16 snapshot 6bc9b21b saved
Ich hatte vorher ein paar Bilder dort abgelegt. Aber man sieht hier, es werden nur neue oder geänderte Daten gesichert. Somit ist das extrem effektiv. Das hat genau 16 Sekunden gedauert
Verbesserungen
Das alles habe ich jetzt auf die Betriebssystem SSD kopiert, nicht so toll. Da muss noch was schönes an die PCIe SATA Karte. Und dahin müssen dann die Daten. Aber das ist ja nicht so schwer, Pfad anpassen - Fertig!
Das alles noch automatisieren.
Mehr Infos zum Thema Restic? Bitte -> https://forum.frank-mankel.org/tags/restic
-
So, dann mal das Ganze testen wenn man seinen Haupt-PC neu installiert hat und ein paar Daten braucht.
Also, mal Restic installiert.
sudo apt-get install restic
Nach erfolgter Installation ein Test
frank@frank-MS-7A34:~/restic$ restic version restic 0.8.3 compiled with go1.10 on linux/amd64
Geht so weit.
Snapshots auflisten.
restic -r sftp:rock64@IP:/home/rock64/backup snapshots
Sieht dann so aus.
frank@frank-MS-7A34:~$ sudo restic -r sftp:rock64@192.168.3.207:/home/rock64/backup snapshots [sudo] Passwort für frank: rock64@192.168.3.207's password: enter password for repository: password is correct ID Date Host Tags Directory ---------------------------------------------------------------------- 7e2eddcb 2018-08-18 10:10:40 frank-MS-7A34 /home/frank/Bilder 073b7cb4 2018-08-18 14:21:17 frank-MS-7A34 /home/frank 6bc9b21b 2018-08-18 16:11:19 frank-MS-7A34 /home/frank ---------------------------------------------------------------------- 3 snapshots
Snapshot wiederherstellen
sudo restic -r sftp:rock64@IP:/home/rock64/backup restore latest --target /tmp/backup
Hiermit stellen wir das Backup im temporären Ordner /tmp/backup wieder her. Hat ewig gedauert, aber ging !?!?!?