Skip to content

Restic UI - Webinterface for backup tool restic [MongoDB]

Verschoben Restic UI (MongoDB)
  • Ich hatte ja im Jahr 2024 Euch mein Tool vorgestellt.

    Re: Vorstellung Restic UI Flask

    Seitdem hat sich eine Menge getan. Die Welt bleibt ja auch nicht stehen, so muss man halt auch Entscheidungen treffen. Eine dieser Entscheidungen betraf das Backend, Redis ist raus geflogen und nun nutze ich MongoDB. Auch nicht mein absoluter Traum von Open Source, aber man kann halt nicht alles haben. Es sollte schon eine NoSQL Datenbank sein.

    Außerdem hat MongoDB ein schönes UI für den Desktop, hört auf den Namen MongoDB Compass. Sehr gut zum Programmieren geeignet, da ich ja doch ständig irgendwo was ändere 🙂

    So sieht das UI zu Weihnachten 2024 aus.

    7d384c16-8358-4348-b907-bb9278052d7d-grafik.png

    Was gibt es Neues?

    Als Erstes habe ich eine kleine Übersicht eingeführt. Diese ist jetzt um zwei Elemente erweitert.

    • S3
    • Last Update

    Und die Felder Source und Repository haben die Positionen getauscht. ( Logik, Quelle -> Ziel gefiel mir besser) Außerdem ist Repository jetzt so aufgebaut, das es auch für REST und S3 Backups den Zielpfad anzeigt.

    Und dann sind wir schon bei der wichtigsten Neuerung, den S3 Backups. Da Hetzner, das jetzt endlich für alle verfügbar gemacht hat, habe ich das natürlich direkt ausprobiert. Aber womit fülle ich das? Meine ersten Test hatte ich auf der Konsole gemacht, da fiel mir doch ein, das Restic das nativ unterstützt 🙂

    Somit musste ich das nur in mein kleines Tool einfügen. Ein paar Tage später funktionierte das dann so wie es sollte und ich konnte mein erstes Backup erfolgreich anlegen. Juhu.

    Damit hat das Tool jetzt drei Backup Möglichkeiten

    • Lokales Backup
    • REST Backup (REST Server von Restic)
    • S3

    Außerdem hatte ich , als ersten Versuch, ein Login / Logout hinzugefügt. Man muss sich also erst einloggen, bevor man auf die Daten der Backups zugreifen kann. Das funktioniert, ist aber noch nicht final. z.B. fehlt noch das erste Anlegen eines Nutzers komplett.

    Add Backup

    Viel Arbeit habe ich hier reingesteckt.

    23370c88-df37-4b5e-97ff-a836c1d92f42-grafik.png

    Man bekommt auch nur die Felder angezeigt, die zu dem entsprechenden Backup auch Sinn machen.

    Edit Backup

    Ebenso beim Editieren eines Backups.

    66071882-6713-402c-b57b-95df6f01418b-grafik.png

    Login / Logout

    79cbc903-e18a-413d-8384-23310f311651-grafik.png

    Hier kann man den User und das Passwort ändern. Das gefällt mir aber noch nicht, habe ich da eigentlich nur schnell rein gecodet zum Testen. Mal sehen, man muss ja auch 2025 noch Aufgaben haben 😉

    ca93d891-40a4-4147-aa14-4964e473d8da-grafik.png

    S3 Praktisches Beispiel

    Init

    Das angelegte S3 Test Projekt muss initialisiert werden. Im Menü kann auch nur diese Funktion ausgewählt werden. In der Übersicht kann man auch erkennen, das Init nicht gesetzt ist.

    63a89be4-127c-4e9e-9ce0-2de59e9966e8-grafik.png

    Wenn ich nun auf Init klicke, taucht nach kurzer Zeit folgendes Fenster auf. Es enthält die Original Ausgabe des Restic Tools.

    15e0e755-2ff8-4e38-8584-80365bcfd5ea-grafik.png

    Backup

    Nach dem Klick auf Backup und kurzer oder längerer Wartezeit, erscheint folgendes Fenster.

    9c06976e-4887-4a5d-b33d-d1484884fe00-grafik.png

    Alle anderen Funktionen arbeiten auf ähnliche Art und Weise. Ich will ja heir nicht langweilen.

    Zum Schluss noch, wie es auf Hetzner aussieht.

    Hetzner

    Den Inhalt des Ordners kann man sich bei Hetzner ansehen.

    6cbf7a9a-b703-4e58-b86a-802014fc8df7-grafik.png

    Und das Tolle an Restic ist, alle Daten sind AES256 verschlüsselt. Ein ordentliches Passwort vorausgesetzt, sollte verhindern, das andere Menschen die versehentlich in den Besitz der Dateien kommen irgendwas damit anfangen können 🙂

    So sieht das dann in der Praxis aus.

    2c85a3ab-6ed1-44df-97a0-3df9334a0f93-grafik.png

    Video

    Ausblick

    Aktuell ist das gitlab Repository auf Privat gestellt. Ob sich das ändert, weiß ich aktuell noch nicht. Bin immer noch an meiner Code Qualität am Arbeiten usw.

    Sollte aber jemand echtes Interesse an dem Projekt haben, werden wir dafür auch eine Lösung finden.

    Da ich das Projekt auch produktiv nutze, werde ich jetzt wohl alles auf S3 verlagern.

  • FrankMF FrankM verschob dieses Thema von Restic UI
  • Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet.

    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 😉

  • KDE neon Unstable Edition

    Linux
    6
    +1
    0 Stimmen
    6 Beiträge
    324 Aufrufe
    FrankMF
    Heute Morgen beim mal die Testinstallation aktualisiert. 484 Pakete [image: 1700901047287-screenshot_20231125_092126.png] Nach dem Klicken auf Alle aktualisieren, startete der Rechner neu und installierte dann die Updates!? Holy Fuck, das erinnert mich an M$. Aber gut, KDE Neon soll ja auch nicht mein Hauptsystem werden.
  • Pycharm & Docker

    Verschoben Linux
    1
    +3
    0 Stimmen
    1 Beiträge
    225 Aufrufe
    Niemand hat geantwortet
  • ZFS - Wichtige Befehle

    Linux
    2
    0 Stimmen
    2 Beiträge
    699 Aufrufe
    FrankMF
    Unter dem Beitrag sammel ich mal ein paar Beispiele, für mich zum Nachlesen Den Anfang macht die ZFS-Replication Ich hatte Am Anfang ein wenig Verständnisprobleme, bis es klar war, das diese Replication von Pool zu Pool funktioniert. Also brauchen wir zwei vorhandene ZFS-Pools. root@pbs:/mnt/datastore/datapool/test# zfs list NAME USED AVAIL REFER MOUNTPOINT Backup_Home 222G 677G 222G /mnt/datastore/Backup_Home datapool 2.36G 1.75T 2.36G /mnt/datastore/datapool Wir erzeugen ein Dataset im datapool zfs create datapool/docs -o mountpoint=/docs Wir erzeugen eine Datei mit Inhalt echo "version 1" > /docs/data.txt Wir erzeugen einen Snapshot zfs snapshot datapool/docs@today Kontrolle root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 0B - 96K - Wir replizieren den vorhandenen Snapshot zum ZFS-Pool Backup_Home und speichern ihn da im Dataset test. zfs send datapool/docs@today | zfs receive Backup_Home/test Nun befinden sich die Daten in dem anderen ZFS-Pool root@pbs:/mnt/datastore/datapool/test# ls /mnt/datastore/Backup_Home/test/ data.txt Und was mich am meisten interessiert, ist wie man das zu einem anderen Server schickt zfs send datapool/docs@today | ssh otherserver zfs receive backuppool/backup Den Test reiche ich dann später nach. Quelle: https://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/ ZFS inkrementelle Replication Als, nur die geänderten Daten senden! Wir erzeugen ein paar Dateien root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data1.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data2.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data3.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data4.txt Neuer Snapshot zfs snapshot datapool/docs@17:02 Liste der Snapshots root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 56K - 96K - datapool/docs@17:02 0B - 112K - Wir senden dieinkrementelle Replication zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K cannot receive incremental stream: destination Backup_Home/test has been modified since most recent snapshot Dazu schreibt die Anleitung, die ich unten verlinkt habe, das die Daten verändert wurden. Warum, verstehe ich aktuell noch nicht. Mit -F im send Befehl erzwingt man einen Rollback zum letzten Snapshot. zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive -F Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K Und Kontrolle ls /mnt/datastore/Backup_Home/test/ data1.txt data2.txt data3.txt data4.txt data.txt Quelle: https://klarasystems.com/articles/introduction-to-zfs-replication/
  • Debian 11.1 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    168 Aufrufe
    Niemand hat geantwortet
  • Fedora 34

    Linux
    5
    +1
    0 Stimmen
    5 Beiträge
    355 Aufrufe
    FrankMF
    https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=328s
  • Restic v0.11.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    199 Aufrufe
    Niemand hat geantwortet
  • Restic & Rclone & Nextcloud

    Linux
    3
    0 Stimmen
    3 Beiträge
    761 Aufrufe
    FrankMF
    Hier mal eine Ausgabe vom ersten Durchgang root@frank-MS-7C37:~# restic --password-file /root/passwd -r rclone:Nextcloud:HOME_UBUNTU backup --files-from /root/includes.txt repository 99xxxxa0 opened successfully, password is correct created new cache in /root/.cache/restic rclone: 2020/05/08 17:47:57 ERROR : locks: error listing: directory not found rclone: 2020/05/08 17:47:58 ERROR : index: error listing: directory not found rclone: 2020/05/08 17:47:58 ERROR : snapshots: error listing: directory not found Files: 3503 new, 0 changed, 0 unmodified Dirs: 2 new, 0 changed, 0 unmodified Added to the repo: 16.872 GiB processed 3503 files, 21.134 GiB in 1:02:56 snapshot fdxxxxec saved Der erste Durchgang hat also etwa eine Stunde benötigt. Durch die Deduplikation der Daten, ist der Vorgang beim zweiten Durchgang viel schneller weil nur neue oder geänderte Daten gesichert werden. Und außerdem sind alle Daten AES-256 verschlüsselt. Also perfekt zur Ablage in irgendeiner Cloud root@frank-MS-7C37:~# restic --password-file /root/passwd -r rclone:Nextcloud:HOME_UBUNTU backup --files-from /root/includes.txt repository 99xxxxa0 opened successfully, password is correct Files: 57 new, 41 changed, 3449 unmodified Dirs: 0 new, 2 changed, 0 unmodified Added to the repo: 22.941 MiB processed 3547 files, 21.137 GiB in 0:13 snapshot c6xxxxe4 saved Wie ihr seht, hat der zweite Durchgang nur ein paar neue und geänderte Daten gesichert. Der Rest ist ja schon vorhanden. Und das kann man dann auch problemlos täglich, wöchentlich oder was auch immer mal eben schnell durchführen. Eines meiner absoluten Lieblingstool
  • Restic - forget --keep-last 3 --prune

    Restic
    2
    0 Stimmen
    2 Beiträge
    625 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