Skip to content

Restic - Migrate

Restic
  • Man kann ein altes Repo mit Version 1 in ein Repo mit Version 2 migrieren. Ein erster Versuch von mir.

    Schauen wir uns die Hilfe an.

    [frank-ms7c92 ~]# restic migrate -h 
    
    The "migrate" command checks which migrations can be applied for a repository
    and prints a list with available migration names. If one or more migration
    names are specified, these migrations are applied.
    
    EXIT STATUS
    ===========
    
    Exit status is 0 if the command was successful, and non-zero if there was any error.
    
    Usage:
      restic migrate [flags] [migration name] [...]
    
    Flags:
      -f, --force   apply a migration a second time
      -h, --help    help for migrate
    
    Global Flags:
          --cacert file                file to load root certificates from (default: use system certificates)
          --cache-dir directory        set the cache directory. (default: use system default cache directory)
          --cleanup-cache              auto remove old cache directories
          --compression mode           compression mode (only available for repository format version 2), one of (auto|off|max) (default auto)
          --insecure-tls               skip TLS certificate verification when connecting to the repository (insecure)
          --json                       set output mode to JSON for commands that support it
          --key-hint key               key ID of key to try decrypting first (default: $RESTIC_KEY_HINT)
          --limit-download int         limits downloads to a maximum rate in KiB/s. (default: unlimited)
          --limit-upload int           limits uploads to a maximum rate in KiB/s. (default: unlimited)
          --no-cache                   do not use a local cache
          --no-lock                    do not lock the repository, this allows some operations on read-only repositories
      -o, --option key=value           set extended option (key=value, can be specified multiple times)
          --pack-size uint             set target pack size in MiB, created pack files may be larger (default: $RESTIC_PACK_SIZE)
          --password-command command   shell command to obtain the repository password from (default: $RESTIC_PASSWORD_COMMAND)
      -p, --password-file file         file to read the repository password from (default: $RESTIC_PASSWORD_FILE)
      -q, --quiet                      do not output comprehensive progress report
      -r, --repo repository            repository to backup to or restore from (default: $RESTIC_REPOSITORY)
          --repository-file file       file to read the repository location from (default: $RESTIC_REPOSITORY_FILE)
          --tls-client-cert file       path to a file containing PEM encoded TLS client certificate and private key
      -v, --verbose n                  be verbose (specify multiple times or a level using --verbose=n, max level/times is 3)
    

    Dort findet man alles, was man wissen muss 😉

    Als erstes macht Restic einen Test um zu klären, ob man migrieren kann.

    [frank-ms7c92 ~]# restic migrate -r /mnt/Backup/Datensicherung_Home_Restic_UI/
    enter password for repository: 
    repository 50a2a753 opened (repository version 1) successfully, password is correct
    available migrations:
      upgrade_repo_v2       upgrade a repository to version 2
    

    Nun zeigt er uns die Migrationsmöglichkeit an, hier

    upgrade_repo_v2
    

    Der Migrationsvorgang

    [frank-ms7c92 ~]# restic migrate upgrade_repo_v2 -r /mnt/Backup/Datensicherung_Home_Restic_UI/
    enter password for repository: 
    repository 50a2a753 opened (repository version 1) successfully, password is correct
    checking repository integrity...
    using temporary cache in /tmp/restic-check-cache-3584864968
    enter password for repository: 
    repository 50a2a753 opened (repository version 1) successfully, password is correct
    created new cache in /tmp/restic-check-cache-3584864968
    load indexes
    check all packs
    check snapshots, trees and blobs
    [0:05] 100.00%  13 / 13 snapshots
    no errors were found
    applying migration upgrade_repo_v2...
    migration upgrade_repo_v2: success
    

    Der Migrations Prozeß war erfolgreich.

    migration upgrade_repo_v2: success
    

    Danach hatte ich ein Problem, weil ich das alles mal wieder als Root gemacht hatte und nun die Dateiberechtigungen falsch waren. Kurz geändert, dann kann es weiter gehen 🙂

    [frank-ms7c92 ~]# ls -lha /mnt/Backup/Datensicherung_Home_Restic_UI/
    insgesamt 32K
    drwx------   7 frankm frankm 4,0K 25. Aug 22:10 .
    drwxr-xr-x   8 frankm frankm 4,0K 24. Jul 10:37 ..
    -r--------   1 root   root    155 25. Aug 22:10 config
    drwx------ 258 frankm frankm 4,0K 10. Jul 2021  data
    drwx------   2 frankm frankm 4,0K 25. Aug 21:02 index
    drwx------   2 frankm frankm 4,0K 10. Jul 2021  keys
    drwx------   2 frankm frankm 4,0K 25. Aug 22:10 locks
    drwx------   2 frankm frankm 4,0K 25. Aug 21:02 snapshots
    [frank-ms7c92 ~]# chown -R frankm:frankm /mnt/Backup/Datensicherung_Home_Restic_UI/
    [frank-ms7c92 ~]# ls -lha /mnt/Backup/Datensicherung_Home_Restic_UI/
    insgesamt 32K
    drwx------   7 frankm frankm 4,0K 25. Aug 22:10 .
    drwxr-xr-x   8 frankm frankm 4,0K 24. Jul 10:37 ..
    -r--------   1 frankm frankm  155 25. Aug 22:10 config
    drwx------ 258 frankm frankm 4,0K 10. Jul 2021  data
    drwx------   2 frankm frankm 4,0K 25. Aug 21:02 index
    drwx------   2 frankm frankm 4,0K 10. Jul 2021  keys
    drwx------   2 frankm frankm 4,0K 25. Aug 22:10 locks
    drwx------   2 frankm frankm 4,0K 25. Aug 21:02 snapshots
    

    In der Doku hatte ich gelesen, das es jetzt noch einen Schritt benötigt.

    After the migration is complete, run prune to compress the repository metadata.

    ec2510d2-e11f-409e-bcd2-aa75e97d6654-image.png

    Danach benutzt das Repo die Version 2. Es ist aber nocht nicht alles komprimiert.

    File contents stored in the repository will not be rewritten, data from new backups will be compressed. Over time more and more of the repository will be compressed. To speed up this process and compress all not yet compressed data, you can run prune --repack-uncompressed

    Vorher

    e938e73b-35c0-4b55-a45e-127d93cb2825-image.png

    Nachher

    Uuups, jetzt ist mir der Plattenplatz ausgegangen. Ok, machen wir morgen weiter.

    [frank-ms7c92 ~]# restic prune --repack-uncompressed -r /mnt/Backup/Datensicherung_Home_Restic_UI/
    enter password for repository: 
    wrong password or no key found. Try again
    enter password for repository: 
    repository 50a2a753 opened (repository version 2) successfully, password is correct
    loading indexes...
    loading all snapshots...
    finding data that is still in use for 12 snapshots
    [0:06] 100.00%  12 / 12 snapshots
    searching used packs...
    collecting packs for deletion and repacking
    [0:00] 100.00%  48761 / 48761 packs processed
    
    to repack:        639695 blobs / 232.525 GiB
    this removes:      17295 blobs / 2.420 GiB
    to delete:             0 blobs / 0 B
    total prune:       17295 blobs / 2.420 GiB
    remaining:        834691 blobs / 230.262 GiB
    unused size after prune: 0 B (0.00% of remaining size)
    
    repacking packs
    [20:01] 35.12%  17121 / 48748 packs repacked
    Fatal: write /mnt/Backup/Datensicherung_Home_Restic_UI/data/f5/f5aa7d219ded5c271bf36ef67676f9af9d7817cf24d3245807734e6e6ca61e73-tmp-2111188238: no space left on device
    

    Ok, der Vorgang ist jetzt abgeschlossen. Kalkuliert bitte für den Vorgang den Platz der aktuell verbraucht wird obendrauf. Unter Umständen wird das schwierig.

    [frank-ms7c92 Backup]# restic prune --repack-uncompressed -r /mnt/Backup/Datensicherung_Home_Restic_UI/
    enter password for repository: 
    repository 50a2a753 opened (repository version 2) successfully, password is correct
    loading indexes...
    loading all snapshots...
    finding data that is still in use for 12 snapshots
    [0:06] 100.00%  12 / 12 snapshots
    searching used packs...
    collecting packs for deletion and repacking
    [0:00] 100.00%  48761 / 48761 packs processed
    
    to repack:        639695 blobs / 232.525 GiB
    this removes:      17295 blobs / 2.420 GiB
    to delete:             0 blobs / 73.281 GiB
    total prune:       17295 blobs / 75.701 GiB
    remaining:        834691 blobs / 230.262 GiB
    unused size after prune: 0 B (0.00% of remaining size)
    
    deleting unreferenced packs
    [0:01] 100.00%  4447 / 4447 files deleted
    repacking packs
    [1:56:48] 100.00%  48748 / 48748 packs repacked
    rebuilding index
    [0:01] 100.00%  12707 / 12707 packs processed
    deleting obsolete index files
    [0:00] 100.00%  6 / 6 files deleted
    removing 48748 old packs
    [0:02] 100.00%  48748 / 48748 files deleted
    done
    

    Ich kann hier leider nicht aufzeigen, ob ich etwas gespart habe. Dafür hätte ich vorher mal eine Bestandsaufnahme machen müssen. Vergessen 😞

    Die neuen Funktionen arbeiten aber soweit korrekt, soweit ich das aktuell beurteilen kann. Werde mich mit dem Thema aber noch etwas ausführlicher beschäftigen, auch weil ich die neuen Funktionen in mein Resti UI einbauen werde.

  • Rest-Server v0.12.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    65 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Stand Januar 2023

    PyWebIO
    1
    0 Stimmen
    1 Beiträge
    101 Aufrufe
    Niemand hat geantwortet
  • Restic - 0.15.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    51 Aufrufe
    Niemand hat geantwortet
  • Restic - Kompression

    Restic
    2
    0 Stimmen
    2 Beiträge
    261 Aufrufe
    FrankMF

    Gestern Abend noch ein paar Tests gemacht, aber nicht wirklich Erfolg gehabt. Ok, dann heute noch mal von vorne und mit System. Als erstes muss man mal Daten finden, die man auch gut komprimieren kann, ich will ja auch ein deutliches Ergebnis sehen.

    Meine Wahl fiel auf einen openwrt Ordner, mit dem ich mal ein Image selber gebaut hatte. Schön viele kleine Dateien, sollte sich gut komprimieren lassen.

    Original

    547e3596-69df-48ac-9409-5173367afb85-grafik.png

    Test mit 7z

    Rechtsklick, mit den Bordmittel und dann 7z gewählt.

    364b497f-cf59-408c-ba2b-cad70cc09529-grafik.png

    Test mit Restic V1

    Ich habe auf einer mechanischen 1TB Platte zwei Ordner angelegt, einmal Restic_V1, einmal Restic_V2.

    frank@frank-MS-7C37:~/Downloads$ restic version restic 0.13.1 compiled with go1.18 on linux/amd64 Init restic init -r /media/1TB/Restic_V1/ Backup frank@frank-MS-7C37:~/Downloads$ restic -r /media/1TB/Restic_V1/ backup /home/frank/openwrt/ enter password for repository: repository 731db857 opened successfully, password is correct created new cache in /home/frank/.cache/restic no parent snapshot found, will read all files Files: 407839 new, 0 changed, 0 unmodified Dirs: 41286 new, 0 changed, 0 unmodified Added to the repo: 7.851 GiB processed 407839 files, 11.061 GiB in 4:49 snapshot 24cd8ef4 saved Ergebnis

    799fa3ee-5bdf-48ba-a05e-8f7f24f1c41b-grafik.png

    Test mit Restic V2 frank@frank-MS-7C37:~/Downloads$ ./restic_v0.13.0-126-g26c33332_linux_amd64 version restic 0.13.1-dev (compiled manually) compiled with go1.18 on linux/amd64 Init ./restic_v0.13.0-126-g26c33332_linux_amd64 init -r /media/1TB/Restic_V2/ --repository-version 2 Backup frank@frank-MS-7C37:~/Downloads$ ./restic_v0.13.0-126-g26c33332_linux_amd64 -r /media/1TB/Restic_V2/ backup /home/frank/openwrt/ enter password for repository: repository 33c5e24c opened (repo version 2) successfully, password is correct created new cache in /home/frank/.cache/restic no parent snapshot found, will read all files Files: 407839 new, 0 changed, 0 unmodified Dirs: 41286 new, 0 changed, 0 unmodified Added to the repo: 7.835 GiB processed 407839 files, 11.061 GiB in 2:47 snapshot 474d0376 saved Ergebnis

    caafd946-1285-4e1d-8873-a3ff4141a777-grafik.png

    Fazit

    Fassen wir es mal ein wenig zusammen. Das Original hat 12,1GB

    ITool Dateigröße Zeit 7z 2,2GB ca. 11:59 Restic V1 8,5GB 4:49 Restic V2 2,9GB 2:47

    Man kann auch noch etwas an der Kompression einstellen, ich habe es für diesen Test auf der Standardeinstellung(?) gelassen.

    You can set the desired compression level by passing it to --compression (e.g. restic backup --compression max), supported are auto, max and off.

    Das Ergebnis sieht sehr vielversprechend aus. Es könnte den Platzverbrauch stark begrenzen, sehr wichtig für mich wenn man seine Daten in einer Cloud speichert. (Stichwort: Kosten) Und was hier auch noch schön ins Auge fällt, es ist schneller 🙂 Das möchte ich hier nicht versuchen zu erklären, da ich nicht genau woran es liegt. Vermutung, ich muss wesentlich weniger Daten "schreiben".

    Ich freue mich extrem, diese Version produktiv einzusetzen. Mal überlegen, ob ich die Version hier auf dem Haupt-PC mal testweise nutze, ich denke das wäre spannend.

    @Restic-Team: Vielen Dank für dieses tolle Feature!
  • 0 Stimmen
    1 Beiträge
    168 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
    2 Beiträge
    791 Aufrufe
    FrankMF

    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
    1k Aufrufe
    Niemand hat geantwortet