Skip to content

Restic UI - Migrate

Restic UI
  • Da man ja seit Restic Version v0.14.0 nun Kompression hat gibt es dafür eine neues Repo Format mit Namen V2. Es gibt dazu auch Migrations Tools, die müssen dann jetzt auch ins Restic UI.

    Das Menü

    cb86e016-a023-4c7a-8bdc-97524ec3b968-image.png

    Teil 1 Migrate check

    Als erstes, wenn der Test erfolgreich war.

    9165e95e-6845-4eac-816d-7f8a9f4521d6-image.png

    Test nicht erfolgreich

    f33d2b78-7895-458f-a310-adad4213fe6a-image.png

    Teil 2 Migrate Update

    Ok, es wird komplizierter, da wird zweimal eine Passwortabfrage erwartet.... Hirn einschalten und grübeln....

    [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
    
  • Yeah 🙂

    545cb6ac-d241-453b-8a08-00f6dd81fe1b-image.png

  • Hier die Lösung für das Problem.

    So sieht mein normaler Aufruf aus

    args = [restic,
            'migrate',
            '-r',
            'rest:https://%s:%s@%s:%s/%s' % (backup_data[row].rest_user,
                                             backup_data[row].rest_password,
                                             backup_data[row].rest_domain,
                                             backup_data[row].rest_port,
                                             backup_data[row].rest_folder)]
    
    result = subprocess.run(args,
                            input=pass_word.pw[0],
                            check=True,
                            capture_output=True,
                            text=True)
    

    Dabei wird halt einmal das PW übergeben, wir brauchen das aber zweimal s.o.

    In Restic gibt es folgendes

    export RESTIC_PASSWORD="I9n7G7G0ZpDWA3GOcJbIuwQCGvGUBkU5"
    

    Das müssen wir uns jetzt nutzbar machen.

    args = [restic,
            'migrate',
            'upgrade_repo_v2',
            '-r',
            backup_data[row].repository]
    
    result = subprocess.run(args,
                            env=dict(os.environ, RESTIC_PASSWORD=backup_data[row].password),
                            check=True,
                            capture_output=True,
                            text=True)
    

    Diese Zeile

    env=dict(os.environ, RESTIC_PASSWORD=backup_data[row].password),
    

    setzt die Umgebungsvariable.

    Jetzt muss ich mir mal eben Gedanken über die Sicherheit machen, ob ich das so lasse....

  • Wenn ich das aus VSCodium kopiere sieht das hier schrecklich aus. Da muss ich mich mal nach was anderem umschauen, das sieht ja hier im Forum einfach Sch.... aus.

    Update 30.08.22
    Habe da was in den Settings des Forums gefunden, das sollte jetzt besser passen.

  • Kurz noch was vom Restic Team

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • 0 Stimmen
    2 Beiträge
    295 Aufrufe
    FrankMF
    Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet. [image: 1736705735786-00a95363-1f41-4bbf-884a-34f21aea81e4-grafik.png] Man kann nun suchen, sortieren und wenn man mehr als 10 Datenpunkte hat, hat die Tabelle auch Pagination. Ein nettes Projekt, macht einiges einfacher Das nächste, ich hatte es im Video ja kurz erwähnt, mir fehlte ja noch die Restore Funktion von Restic. Ok, ist jetzt auch drin. Da die Benutzerverwaltung mittlerweile komplett eingebaut ist, werde ich demnächst meine Test Datenbanken und alles was damit zu tuen hat, aus dem Code entfernen. Brauch ich jetzt nicht mehr. Habe jetzt zwei Benutzer, einen Produktiven und einen zum Testen. Langfristig steht auch noch eine zweite Sprache auf dem Zettel. Aber, dafür muss ich Lust haben, das Thema juckt nicht so richtig
  • Python3 - pyqtSignal

    Python3
    1
    0 Stimmen
    1 Beiträge
    96 Aufrufe
    Niemand hat geantwortet
  • Restic UI - auf PyQt6 umbauen

    Restic UI
    5
    +0
    0 Stimmen
    5 Beiträge
    221 Aufrufe
    FrankMF
    Ich hatte im Python Forum mal um Hilfe gebeten und man hat mir einen Hinweis gegeben, dem ich hier mal nachgehe. Der Forenuser meinte, das es ihn wundern würde, wenn ich von QtCore importieren müsste, also self.addDockWidget(QtCore.Qt.DockWidgetArea.RightDockWidgetArea, self.items) Das habe ich mal ausprobiert. Wenn ich von QtCore Qt importiere, kann ich das QtCore weglassen. from PyQt6.QtCore import QSettings, Qt dann geht auch self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.items) Es sieht so aus, das ich mich in dieses Thema noch ein wenig einarbeiten muss
  • Restic UI - Cross-Platform Desktop Application

    Restic UI
    1
    +6
    0 Stimmen
    1 Beiträge
    141 Aufrufe
    Niemand hat geantwortet
  • Restic UI - REST Server Unterstützung

    Restic UI
    2
    0 Stimmen
    2 Beiträge
    243 Aufrufe
    FrankMF
    Die REST Unterstützung ist komplett https://gitlab.com/Bullet64/restic-ui-public/-/releases/1.1.0 Ich denke, ein wenig Dokumentation wäre noch gut
  • Restic UI - Released

    Restic UI
    1
    0 Stimmen
    1 Beiträge
    152 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Documentation

    Restic UI
    1
    +0
    0 Stimmen
    1 Beiträge
    293 Aufrufe
    Niemand hat geantwortet
  • Python3 - Popen und seine Geheimnisse ;)

    Python3
    1
    0 Stimmen
    1 Beiträge
    198 Aufrufe
    Niemand hat geantwortet