Skip to content

Restic - Ein Backupkonzept - Wiederherstellung

Verschoben Restic
  • Im letzten Artikel Restic - Ein Backupkonzept - Automatisieren! haben wir mittels Restic und Rclone eine Datensicherungsmöglichkeit erstellt, die uns vollautomatisch Backup's in eine Nextclod-Installation sichert.

    So weit, so gut. Aber ein Backup nützt nichts, wenn man die Daten nicht testet und auch mal die Wiederherstellung ausprobiert. Restic legt ja nun bei jedem Vorgang einen Snapshot an. Hier eine kurze Erklärung wie man diese testet und wiederherstellt.

    Snapshot auflisten

    Mit folgendem Befehl listet man alle Snaphots auf.

    restic -r rclone:nextcloud:TEST snapshots
    

    Ausgabe:

    restic -r rclone:nextcloud:TEST snapshots
    enter password for repository:
    password is correct
    ID Date Host Tags Directory
    ----------------------------------------------------------------------
    5c190a9a 2018-04-25 17:32:56 frank-MS-7A34 /media/
    80dbfa5e 2018-04-25 17:33:54 frank-MS-7A34 /media/
    7c894658 2018-04-25 17:36:06 frank-MS-7A34 /media/
    32f6138b 2018-04-25 17:39:09 frank-MS-7A34 /media/
    51746817 2018-04-25 17:39:34 frank-MS-7A34 /media/
    5fba5e1d 2018-04-25 17:39:51 frank-MS-7A34 /media/
    0f4b2d7e 2018-04-25 20:24:40 frank-MS-7A34 /media/
    a3622a2b 2018-04-25 20:26:17 frank-MS-7A34 /media/
    c15e6293 2018-04-25 20:29:03 frank-MS-7A34 /media/
    3c13b348 2018-04-26 20:00:04 frank-MS-7A34 /media/
    ad607561 2018-04-27 20:00:05 frank-MS-7A34 /media/
    ----------------------------------------------------------------------
    11 snapshots
    

    Snapshot testen

    restic -r rclone:nextcloud:TEST check --read-data
    using temporary cache in /tmp/restic-check-cache-935353687
    enter password for repository: 
    password is correct
    create exclusive lock for repository
    load indexes
    check all packs
    check snapshots, trees and blobs
    read all data
    [0:00] 100.00%  5 / 5 items
    duration: 0:00
    no errors were found
    

    Wir sehen, das die Daten in Ordnung sind.

    Snapshot wiederherstellen

    Die Snapshot-ID kopieren und dann folgenden Befehl eingeben

    restic -r rclone:nextcloud:TEST restore ad607561 --target /home/frank/Test_Restic
    enter password for repository:
    password is correct
    restoring to /home/frank/Test_Restic
    

    Danach befinden sich die Daten im Ordner /home/frank/Test_Restic

    Script erweitern

    Um das Ganze jetzt rund zu machen, brauchen wir ein Script, was die Daten sichert. Nach der Sicherung uns die Daten testet und bei einem Fehler eine Ausgabe in ein Logfile macht.

    Ok, also manipulieren wir ein File um den Fehler abfangen zu können.

    ./check.sh
    using temporary cache in /tmp/restic-check-cache-068904630
    password is correct
    create exclusive lock for repository
    load indexes
    check all packs
    check snapshots, trees and blobs
    error: load <snapshot/a82ece8693>: invalid data returned
    read all data
    [0:00] 100.00% 3 / 3 items
    duration: 0:00
    Fatal: repository contains errors
    Abgebrochen
    

    Den Snapshot a82.... habe ich manipuliert, eine Fehlermeldung "Abgebrochen" gebe ich auch schon aus. Das File sieht so aus.

    #!/bin/bash
    # Script um mit Restic & Rclone Daten zu checken!
    
    # PW hinterlegen
    export RESTIC_PASSWORD=12345678
    
    restic -r rclone:nextcloud:Daten check --read-data
    failcode=$?
    
    d='date +%d.%m.%Y_%H:%M:%S'
    
    if [ $failcode != 0 ]
    then
        echo $d "Ein Fehler ist aufgetreten!" >> /home/frank/restic.log
    fi
    

    Bei einem Fehler wird geloggt. Ausgabe:

    27.04.2018_22:13:51 Ein Fehler ist aufgetreten!
    27.04.2018_22:14:35 Ein Fehler ist aufgetreten!
    

    Das Ganze basteln wir jetzt mit dem Backup-Script zusammen.

    #!/bin/bash
    # Script um mit Restic & Rclone Daten automatisiert zu sichern!
    
    # Repo definieren und PW hinterlegen
    export RESTIC_PASSWORD=12345678
    
    #Was soll gesichert werden?
    backup_pfad=/media/
    
    #Programm Start
    restic -r rclone:nextcloud:TEST backup $backup_pfad
    restic -r rclone:nextcloud:TEST check --read-data
    
    failcode=$?
    d='date +%d.%m.%Y_%H:%M:%S'
    
    if [ $failcode != 0 ]
    then
       echo $d "Ein Fehler ist aufgetreten!" >> /home/frank/restic.log
    fi
    

    Done! 😀

  • Restic feiert 10. Geburtstag

    Restic
    1
    0 Stimmen
    1 Beiträge
    55 Aufrufe
    Niemand hat geantwortet
  • Restic v0.16.1 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    93 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#
  • Kopia - Mit Snapshots arbeiten

    Kopia
    2
    0 Stimmen
    2 Beiträge
    342 Aufrufe
    FrankMF

    Solltet Ihr mal snaps mit dem Status incomplete haben und möchtet diese loswerden

    :~$ kopia snap ls -i USER@HOST:/home/frank 2020-09-10 16:31:45 CEST k89770cab1061e00ada49efc41075ed34 incomplete:canceled 728.8 MB drwxr-xr-x files:8891 dirs:3033 (incomplete) 2020-09-10 16:40:05 CEST k27f028b63299983167cb0b4a0c85df80 incomplete:canceled 153.8 MB drwxr-xr-x files:1052 dirs:324 (incomplete)

    So was passiert z.B. wenn die Internetleitung rumzickt. Jarek meint, das wäre nicht schlimm, beim nächsten Snapshot wird das gefixt und die Daten genutzt, die schon verarbeitet wurden.

  • Kopia - HTTP/S Server

    Verschoben Kopia
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF

    Ich hatte ein paar Probleme, die ich mir teilweise nicht erklären kann 🤔

    Ich möchte den Kopia Server gerne über systemd steuern.

    SystemD [Unit] Description=Kopia Server After=syslog.target After=network.target [Service] Type=simple User=kopia Group=kopia ExecStart=/usr/bin/kopia server --tls-cert-file /home/kopia-server/fullchain.pem --tls-key-file /home/kopia-server/privkey.pem --htpasswd-file /home/kopia-server/.htpasswd --address <IPv4>:51515 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

    Danach

    systemctl daemon-reload systemctl start kopia-server

    Mit

    systemctl status kopia-server

    kann man sich den Status anzeigen lassen.

    Client Rechner

    Auf dem Client, der das Backup zum Server schicken soll, machen wir dann folgendes.

    USER@HOSTNAME:~$ kopia repo connect server --url=https://<DOMAIN>:51515 --override-username=USER --override-hostname=HOSTNAME Enter password to open repository: Connected to repository API Server. NOTICE: Kopia will check for updates on GitHub every 7 days, starting 24 hours after first use. To disable this behavior, set environment variable KOPIA_CHECK_FOR_UPDATES=false Alternatively you can remove the file "/home/frank/.config/kopia/repository.config.update-info.json".

    Danach steht die Verbindung und wir können Backups hochschieben.

    kopia snapshot create $HOME

    Damit wird das Homeverzeichnis gesichert. Das initiale Backup, hat 30 Minuten gebraucht.

    created snapshot with root kb9e50ff5xxxxxxxxxx265d40a5d0861 and ID cda5c0ffxxxxxxxxxxxxxxa4cb4a367b in 30m28s

    Ein späteres Backup, sieht so aus.

    USER@HOSTNAME:~$ kopia snapshot create $HOME Snapshotting USER@HOSTNAME:/home/frank ... * 0 hashing, 51 hashed (324.8 MB), 8524 cached (6.6 GB), 0 uploaded (0 B), 0 errors 100.0% Created snapshot with root kc20a4xxxxxxxxxxxx745c6c7b37c and ID d7a96eaxxxxxxxxxxx0961018eacffa in 3m12s

    Nach 3 Minuten durch. Zu diesem Zeitpunkt hat sich aber auch nicht wirklich was geändert!

    Fazit

    Das Tool macht immer noch einen sehr guten Eindruck. Die Geschwindigkeit ist sehr gut. Die Anleitung ist leider unzureichend. Da gibt es so viele Möglichkeiten, da braucht es sehr lange, bis man da mal durchsteigt. Zum Glück, ist das was man normalerweise braucht, recht überschaubar. Bis zum produktiven Einsatz braucht das aber bei mir noch eine Menge mehr Tests.

    Was ich noch testen möchte

    Verzeichnis mounten Backup testweise wieder herstellen (zumindestens teilweise)

    Der Test läuft mit Standard Einstellungen, also z.B. ohne Kompression. Das sollte man dann auch mal testen..

    Bitte achtet auf gleiche Versionen auf dem Clienten, wie auf dem Server. Ich meine da ein paar Probleme festgestellt zu haben...

  • ReactPHP auf einem ROCKPro64 testen

    Linux
    1
    0 Stimmen
    1 Beiträge
    172 Aufrufe
    Niemand hat geantwortet
  • Restic - Rootserver als Datenablage nutzen

    Restic
    2
    0 Stimmen
    2 Beiträge
    684 Aufrufe
    FrankMF

    Ok, das erste Backup dauert immer was länger 😉 In meinem Fall 5 Std. 16 Minuten.

    Files: 33408 new, 0 changed, 0 unmodified Dirs: 1 new, 0 changed, 0 unmodified Data Blobs: 20849 new Tree Blobs: 2 new Added to the repo: 6.278 GiB processed 33408 files, 8.604 GiB in 5:16:03 snapshot 5beg1cb3 saved

    Aber, das Schöne ist, das die Backups inkrementell angelegt werden. Das nächste geht schneller 🙂

    open repository repository 3gg202a2 opened successfully, password is correct lock repository load index files using parent snapshot 5beg1cb3 start scan on [/home/frank] start backup on [/home/frank] scan finished in 3.791s: 33788 files, 8.611 GiB Files: 496 new, 74 changed, 33218 unmodified Dirs: 0 new, 1 changed, 0 unmodified Data Blobs: 292 new Tree Blobs: 2 new Added to the repo: 43.661 MiB processed 33788 files, 8.611 GiB in 2:15 snapshot fag41bf7 saved

    Eine tägliche Sicherung sollte dann wohl reichen.

  • 0 Stimmen
    1 Beiträge
    776 Aufrufe
    Niemand hat geantwortet