Skip to content

Restic - Einen ROCKPro64 als Datengrab benutzen

Verschoben Restic
  • 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)

    0_1534604019136_IMG_20180818_142519_ergebnis.jpg

    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:

    1. Wir laden das Repository von github
    2. Wir wechseln in das Verzeichnis
    3. Wir bauen mit go die Anwendung restic
    4. 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 jetzt

    sudo 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.

    0_1534692578537_IMG_20180819_090116_ergebnis.jpg

    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 !?!?!?

  • 0 Stimmen
    1 Beiträge
    80 Aufrufe
    Niemand hat geantwortet
  • Restic - riscv64

    Restic
    4
    0 Stimmen
    4 Beiträge
    130 Aufrufe
    FrankMF

    Hier der kurze Praxistest 🙂

    root@visionfive2:/etc# apt install restic Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: libjs-sphinxdoc sphinx-rtd-theme-common The following NEW packages will be installed: restic 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 6,899 kB of archives. After this operation, 20.8 MB of additional disk space will be used. Get:1 http://ports.ubuntu.com lunar/universe riscv64 restic riscv64 0.14.0-1 [6,899 kB] Fetched 6,899 kB in 1s (5,589 kB/s) Selecting previously unselected package restic. (Reading database ... 34675 files and directories currently installed.) Preparing to unpack .../restic_0.14.0-1_riscv64.deb ... Unpacking restic (0.14.0-1) ... Setting up restic (0.14.0-1) ... Processing triggers for man-db (2.11.2-1) ... root@visionfive2:/etc# restic version restic 0.14.0 compiled with go1.19.2 on linux/riscv64 root@visionfive2:/etc# restic self-update writing restic to /usr/bin/restic find latest release of restic at GitHub latest version is 0.15.2 download SHA256SUMS download SHA256SUMS.asc GPG signature verification succeeded download restic_0.15.2_linux_riscv64.bz2 downloaded restic_0.15.2_linux_riscv64.bz2 saved 21954560 bytes in /usr/bin/restic successfully updated restic to version 0.15.2 root@visionfive2:/etc# restic version restic 0.15.2 compiled with go1.20.3 on linux/riscv64 root@visionfive2:/etc#
  • 0 Stimmen
    3 Beiträge
    166 Aufrufe
    FrankMF

    Hallo @berthold, du bist mein einziger Star 🙂 Ok, darum geht es mir ja nicht, wie Du weißt mache ich das hauptsächlich für mich und meine Backups klappen damit sehr gut. Ist also produktiv einsetzbar.

    Wie Du gemerkt hast, gibt es Zeiten da mache ich ganz viel und dann wieder Zeiten da passiert nix. Das ist bei mir normal, ich muss da "Bock" drauf haben. Habe ich viel Stress auf der Arbeit, passiert Abends eher sehr wenig..

    Ich hoffe das ich mittlerweile alle Fehler gefunden habe, die Grundfunktionen sind alle funktional. Mittlerweile kann man die JSON Datei mit den Daten der Backups auf Wunsch auch verschlüsseln 🙂

    Ich habe noch eine ganze Reihe an Notizen, was ich gerne noch machen möchte. Wichtig ist mir aber im Moment, das ich alle Fehler finde und das so wie es jetzt ist, einwandfrei läuft.

    Darum, wenn es jemand nutzt, bitte gebt Feedback. Egal ob positiv oder negativ. Ich freue mich persönlich natürlich mehr über positives Feedback 🙂

  • Restic v0.12.1 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    153 Aufrufe
    Niemand hat geantwortet
  • Debian Buster 10.7 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    201 Aufrufe
    Niemand hat geantwortet
  • Restic v0.11.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    184 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    17 Beiträge
    1k Aufrufe
    FrankMF

    Durch diesen Beitrag ist mir mal wieder eingefallen, das wir das erneut testen könnten 😉

    Also die aktuellen Daten von Debian gezogen. Das Image gebaut, könnt ihr alles hier im ersten Beitrag nachlesen. Da die eingebaute Netzwerkschnittstelle nicht erkannt wurde, habe ich mal wieder den USB-to-LAN Adapter eingesetzt.

    Bus 005 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet

    Die Installation wollte ich auf einem NVMe Riegel installieren.

    Die Debian Installation durchgezogen und nach erfolgreicher Installation neugestartet. Und siehe da, ohne das man alles möglich ändern musste, bootete die NVMe SSD 🤓

    Eingesetzter uboot -> 2020.01-ayufan-2013......

    Die nicht erkannte LAN-Schnittstelle müsste an nicht freien Treibern liegen, hatte ich da irgendwo kurz gelesen. Beim Schreiben dieses Satzes kam die Nacht und ich konnte noch mal drüber schlafen. Heute Morgen, beim ersten Kaffee, dann noch mal logischer an die Sache ran gegangen.

    Wir schauen uns mal die wichtigsten Dinge an.

    root@debian:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff 3: enx000acd26e2c8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0a:cd:26:e2:c8 brd ff:ff:ff:ff:ff:ff inet 192.168.3.208/24 brd 192.168.3.255 scope global dynamic enx000acd26e2c8 valid_lft 42567sec preferred_lft 42567sec inet6 fd8a:6ff:2880:0:20a:cdff:fe26:e2c8/64 scope global dynamic mngtmpaddr valid_lft forever preferred_lft forever inet6 2a02:908:1260:13bc:20a:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr valid_lft 5426sec preferred_lft 1826sec inet6 fe80::20a:cdff:fe26:e2c8/64 scope link valid_lft forever preferred_lft forever

    Ok, er zeigt mir die Schnittstelle eth0 ja an, dann kann es an fehlenden Treibern ja nicht liegen. Lässt dann auf eine fehlerhafte Konfiguration schließen. Nächster Halt wäre dann /etc/network/interfaces

    Das trägt Debian ein

    # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enx000acd26e2c8 iface enx000acd26e2c8 inet dhcp # This is an autoconfigured IPv6 interface iface enx000acd26e2c8 inet6 auto

    Gut, bei der Installation hat Debian ja nur die zusätzliche Netzwerkschnittstelle erkannt, folgerichtig ist die auch als primäre Schnittstelle eingetragen. Dann ändern wir das mal...

    # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug enx000acd26e2c8 allow-hotplug eth0 #iface enx000acd26e2c8 inet dhcp iface eth0 inet dhcp # This is an autoconfigured IPv6 interface #iface enx000acd26e2c8 inet6 auto iface eth0 inet6 auto

    Danach einmal alles neu starten bitte 😉

    systemctl status networking

    Da fehlte mir aber jetzt die IPv4 Adresse, so das ich einmal komplett neugestartet habe. Der Ordnung halber, so hätte man die IPv4 Adresse bekommen.

    dhclient eth0

    Nachdem Neustart kam dann das

    root@debian:/etc/network# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff inet 192.168.3.172/24 brd 192.168.3.255 scope global dynamic eth0 valid_lft 42452sec preferred_lft 42452sec inet6 fd8a:6ff:2880:0:6003:b0ff:fed6:dcb3/64 scope global dynamic mngtmpaddr valid_lft forever preferred_lft forever inet6 2a02:908:1260:13bc:6003:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr valid_lft 5667sec preferred_lft 2067sec inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link valid_lft forever preferred_lft forever 3: enx000acd26e2c8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:0a:cd:26:e2:c8 brd ff:ff:ff:ff:ff:ff

    Fertig, eth0 läuft. Nun kann man den zusätzlichen Adapter entfernen oder halt konfigurieren, wenn man ihn braucht.

    Warum der Debian Installer die eth0 nicht erkennt verstehe ich nicht, aber vielleicht wird das irgendwann auch noch gefixt. Jetzt habe ich erst mal einen Workaround um eine Installation auf den ROCKPro64 zu bekommen.

  • Restic - Update

    Restic
    1
    0 Stimmen
    1 Beiträge
    392 Aufrufe
    Niemand hat geantwortet