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

  • Debian Installer Bookworm RC3 released

    Linux
    2
    0 Stimmen
    2 Beiträge
    69 Aufrufe
    FrankMF

    Und da sind wir schon bei RC4

    Debian Installer Bookworm RC 4 release

    favicon

    (lists.debian.org)

  • Restic v0.14.0 released

    Restic
    5
    0 Stimmen
    5 Beiträge
    138 Aufrufe
    FrankMF

    @berthold GUI v1.5.0 released mit Unterstützung für restic 0.14.0 und dem Migrations Tool. Bitte zum Testen evt. nicht auf die wichtigsten Daten loslassen 😉

    Mein Test mit meinem Repo auf dem REST-Server war erfolgreich.

  • NanoPi R5S - Samba

    NanoPi R5S
    5
    0 Stimmen
    5 Beiträge
    250 Aufrufe
    FrankMF

    Test zu dem NFS Mount (240GB USB SSD an USB-Port)

    [frank-ms7c37 nfs]# dd if=/dev/zero of=sd.img bs=1M count=2048 oflag=direct,nonblock 2048+0 Datensätze ein 2048+0 Datensätze aus 2147483648 Bytes (2,1 GB, 2,0 GiB) kopiert, 20,0851 s, 107 MB/s

    Test zum NAS Mount (Samba) (2TB 2,5Zoll HDD am USB-Port)

    [frank-ms7c37 NAS]# dd if=/dev/zero of=sd.img bs=1M count=2048 oflag=direct,nonblock 2048+0 Datensätze ein 2048+0 Datensätze aus 2147483648 Bytes (2,1 GB, 2,0 GiB) kopiert, 21,4538 s, 100 MB/s

    Das für den NAS Mount (Samba) sollte die maximal Schreibgrenze der Festplatte sein. Mehr dürfte da nicht gehen. Das andere könnte an den Adaptern liegen, die ich dafür benutze.

    Bei mir ist NFS hier aktuell nicht viel schneller, oder ich bin zu doof dafür.

  • Restic - Passwortübergabe

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

    Restic
    1
    0 Stimmen
    1 Beiträge
    184 Aufrufe
    Niemand hat geantwortet
  • Restic - forget --keep-last 3 --prune

    Restic
    2
    0 Stimmen
    2 Beiträge
    572 Aufrufe
    FrankMF

    Ich habe mich damit noch ein wenig beschäftigt, die letzten drei zu behalten, ist nicht so optimal. Da es viele Optionen bei dem Befehl gibt, hier ein Ausschnitt

    Flags: -l, --keep-last n keep the last n snapshots -H, --keep-hourly n keep the last n hourly snapshots -d, --keep-daily n keep the last n daily snapshots -w, --keep-weekly n keep the last n weekly snapshots -m, --keep-monthly n keep the last n monthly snapshots -y, --keep-yearly n keep the last n yearly snapshots

    habe ich das ein wenig so angepasst, das ich denke es passt für mich.

    restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune

    Damit behalte ich auch die jeweils eines pro Monat. Und die letzten drei. Das sieht dann so aus.

    root@debian:~# ./backup2.sh repository 2f3f6147 opened successfully, password is correct Files: 38 new, 100 changed, 13268 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 10.166 GiB processed 13406 files, 50.324 GiB in 3:24 snapshot 849f614c saved repository 2f3f6147 opened successfully, password is correct Applying Policy: keep the last 3 snapshots, 3 monthly snapshots snapshots for (host [debian], paths [/home/frank]): keep 5 snapshots: ID Time Host Tags Reasons Paths ------------------------------------------------------------------------------------ a7251cfd 2019-11-28 17:00:01 debian monthly snapshot /home/frank 283d4027 2019-12-31 17:00:01 debian monthly snapshot /home/frank ae2b96ec 2020-01-01 21:47:46 debian last snapshot /home/frank 079e00a6 2020-01-02 17:00:01 debian last snapshot /home/frank 849f614c 2020-01-03 21:08:45 debian last snapshot /home/frank monthly snapshot ------------------------------------------------------------------------------------ 5 snapshots remove 26 snapshots: ID Time Host Tags Paths ------------------------------------------------------------------ 896f16c2 2019-11-07 22:23:40 debian /home/frank b21bcf6d 2019-11-11 17:00:01 debian /home/frank f89248fb 2019-11-12 17:00:01 debian /home/frank 123ab546 2019-11-13 17:00:01 debian /home/frank b82d87d0 2019-11-18 17:00:01 debian /home/frank 040b0ab7 2019-11-19 17:00:01 debian /home/frank 7221d8ef 2019-11-20 17:00:01 debian /home/frank 84132a25 2019-11-21 17:00:01 debian /home/frank b558a52c 2019-11-25 17:00:01 debian /home/frank e5cc0c3e 2019-12-02 17:00:01 debian /home/frank 22423fa5 2019-12-03 17:00:01 debian /home/frank 39df1ab9 2019-12-04 17:00:01 debian /home/frank 98843457 2019-12-05 17:00:01 debian /home/frank b0cdd4b6 2019-12-09 17:00:01 debian /home/frank 828414f9 2019-12-10 17:00:01 debian /home/frank e34a27c3 2019-12-11 17:00:01 debian /home/frank 6e488c3b 2019-12-12 17:00:01 debian /home/frank 17898403 2019-12-16 17:00:01 debian /home/frank 1973305a 2019-12-17 17:00:01 debian /home/frank 9553bedd 2019-12-18 17:00:01 debian /home/frank fedf749d 2019-12-19 17:00:01 debian /home/frank 8e7cb876 2019-12-23 17:00:01 debian /home/frank 0bd0d102 2019-12-25 17:00:01 debian /home/frank 13d348b0 2019-12-26 17:00:01 debian /home/frank c7d960aa 2019-12-30 17:00:01 debian /home/frank f6ea9118 2020-01-01 17:00:01 debian /home/frank ------------------------------------------------------------------ 26 snapshots 26 snapshots have been removed, running prune counting files in repo building new index for repo [0:35] 100.00% 7806 / 7806 packs repository contains 7806 packs (46537 blobs) with 41.110 GiB processed 46537 blobs: 0 duplicate blobs, 0 B duplicate load all snapshots find data that is still in use for 5 snapshots [0:01] 100.00% 5 / 5 snapshots found 32654 of 46537 data blobs still in use, removing 13883 blobs will remove 0 invalid files will delete 715 packs and rewrite 752 packs, this frees 5.027 GiB [2:28] 100.00% 752 / 752 packs rewritten counting files in repo [0:01] 100.00% 6571 / 6571 packs finding old index files saved new indexes as [d137b425 f7caee99 a6e9711a] remove 35 old index files [1:13] 100.00% 1467 / 1467 packs deleted done using temporary cache in /tmp/restic-check-cache-916655151 repository 2f3f6147 opened successfully, password is correct created new cache in /tmp/restic-check-cache-916655151 create exclusive lock for repository load indexes check all packs check snapshots, trees and blobs read all data [7:47] 100.00% 6571 / 6571 items duration: 7:47 no errors were found root@debian:~#

    Am Ende seht ihr noch, wie Restic alle Files testet. Mein Script sieht jetzt so aus.

    #!/bin/bash # Script um mit Restic Daten automatisiert zu sichern! # Dient zum Sichern der Homepartition auf dem ROCKPro64 NAS! # Was soll gesichert werden? backup_pfad=/home/frank # Programm Start restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ backup $backup_pfad --exclude-file=excludes.txt restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune # Testen restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ check --read-data

    Das dann schön mit einem Cronjob laufen lassen und die Datensicherung ist erledigt 😉

  • checkmk - Dockerinstallation

    Verschoben checkmk
    9
    0 Stimmen
    9 Beiträge
    949 Aufrufe
    FrankMF

    Und noch was Wichtiges.

    6777da6e-3b4f-41b9-bf6e-26496ae67cd8-grafik.png

    Damit sichert man den Datenaustausch ab.

    Kapitel 7.4. Inbuilt encryption

    Den Ordner findet man hier -> /etc/check_mk/encryption.cfg

  • Redis oder MongoDB?

    Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    458 Aufrufe
    Niemand hat geantwortet