Rund um Rsync: Tipps - Tricks - Frust

  • Eigentlich gehört dieser Beitrag in die Rubrik "dumm, dümmer, am Dümmsten", habe ich aber nicht gefunden. :rolleyes:

    Alles begann damit, dass ich meine NAS-Verzeichnisse nicht mehr automatisch auf dem Desktop einbinde, sondern nur noch bei Bedarf mounte. Dazu eine benutzerdefinierte Aktion in Thunar eingerichtet. So weit so gut.

    Jetzt stand das monatliche Backup auf eine externe Festplatte an. Dazu nutze ich ein simples Bash-Script und rsync.

    Bash
    #!/bin/bash 
    rsync -av --progress --delete --stats ~/Filme/  /extPlatte/Filme
    rsync -av --progress --delete --stats ~/Serien/ /extPlatte/Serien
    rsync -av --progress --delete --stats ~/Fotos/  /extPlatte/Fotos
    exit 0

    Die drei Ordner liegen alle auf dem Server und sind eingebunden auf dem Desktop...hätten. Leider habe ich vorab vergessen, diese Ordner einzubinden und waren somit alle nur leere Hüllen auf dem Desktop. ;(

    Ich konnte gar nicht so schnell reagieren, wie 7 TB an Daten auf der Backup-Festplatte gelöscht wurden. Autsch!

    Falls jemand eine ähnliche Konstruktion fährt, dem kann ich eine Absicherung empfehlen, die vorab prüft, ob die zu sichernden Ordner überhaupt eingebunden sind.

    Prüft, ob die Verzeichnisse Inhalte haben (also eingebunden sind). Wenn nein, dann wird das Script mit "exit 1" beendet.

    Und jetzt läuft schon seit Stunden das Backup und wird noch laaaange dauern. :(

  • Danke für den Tipp.

    Ich nutze FreeFileSync. Da ist auch eine automatische Sync mit an Board. Istbzwar wieder nur ne GUI, aber ich fahre damit sehr gut.

    HP Elitebook 820 G3 | i5-6200U | Integr. Intel Graphikkarte | 8 GB RAM | 240 GB SSD | 1 TB NVME | MX 23 xfce

  • Ich nutze rsnapshot?

    Wenn ich z.B. mal vergesse meine USB-HD zu mounten, dann sagt mir rsnapshot das und macht nix weiter.

    Habe mehrere Snapshots und nutze das schone mehrere Jahre ohne Probleme.

    Wie das mit Netzlaufwerken ist, habe ich noch nie probiert.

    aber das gilt glazube ich auch für Netzlaufwerke:

    Code
    no_create_root	1


    Habe letztens mein System neu aufgesetzt wegen Umstieg von Gnome auf KDE, und alle Daten waren zur Hand.

    /etc habe ich noch mitgesichert, so hatte ich alle Configs die ich brauchte.

    War ein Guter Test wenn mal wirklich der PC crashen sollte..... Test bestanden :)

    3 Mal editiert, zuletzt von Drache (22. April 2022 um 11:37)

  • Wenn ich z.B. mal vergesse meine USB-HD zu mounten, dann sagt mir rsnapshot das und macht nix weiter.

    Quelle und Ziel waren ja vorhanden, deshalb lief das Script ja auch schön durch. Nur war die Quelle halt leer...

    Nach dem "Unfall" musste ich meinen Frust hier mal niederschreiben, ist gerade keiner zu Hause zum Reden. :D

  • Ich denke ich habe gelesen das rsync default das Ziel nicht löscht? Hab ich das falsch gelesen?
    Da muss ich ja mal gucken gehen, nicht das was kaputt geht hier ...

    PC: AMD Ryzen 7 5700X | AMD RX6600 | 32GB RAM | Debian 12 Xfce
    Notebook: AMD Ryzen 5 5300U | Vega Graphic | 16GB RAM | Debian 12 Xfce

  • Ich denke ich habe gelesen das rsync default das Ziel nicht löscht? Hab ich das falsch gelesen?
    Da muss ich ja mal gucken gehen, nicht das was kaputt geht hier ...

    Liegst richtig, da wird nichts gelöscht.

    Ich habe aber die Option --delete mitgegeben, weil ich eine 1:1 Kopie haben will.

    Bei meinem Backupserver nutze ich die Option --backup-dir, dann wird vor dem Löschen der Datei im Ziel eine Sicherungskopie in einem separates Verzeichnis erstellt.

    Code
    rsync -rvtp --progress --delete --backup-dir=/mnt/backupserver/restore/Dokumente/ ~/Dokumente/ /mnt/backupserver/disk1/Dokumente

    2 Mal editiert, zuletzt von Sojan (22. April 2022 um 12:10)

  • Liegst richtig, da wird nichts gelöscht.

    Ich habe aber die Option --delete mitgegeben

    Ok, das beruhigt mich.

    Ich hab sowas in der Art ohne mounts, ohne delete:

    Code
    rsync --numeric-ids --ignore-existing -acvzE --stats /home/harihegen harihegen@backupserver1:"/srv/dev-disk-by-uuid-lauterwirrezeichen/sync/Backup/....../home/harihegen"

    PC: AMD Ryzen 7 5700X | AMD RX6600 | 32GB RAM | Debian 12 Xfce
    Notebook: AMD Ryzen 5 5300U | Vega Graphic | 16GB RAM | Debian 12 Xfce

  • Ok, das beruhigt mich.

    Ich hab sowas in der Art ohne mounts, ohne delete:

    Code
    rsync --numeric-ids --ignore-existing -acvzE --stats /home/harihegen harihegen@backupserver1:"/srv/dev-disk-by-uuid-lauterwirrezeichen/sync/Backup/....../home/harihegen"

    Was bewirkt denn --ignore-existing ?

    Überspringt die vorhandenen Daten und schreibt nur die neuen

    Was passiert denn, wenn eine bereits vorhandene Datei in der Quelle verändert wurde? Wird diese dann ignoriert?

  • Was bewirkt denn --ignore-existing ?

    Was passiert denn, wenn eine bereits vorhandene Datei in der Quelle verändert wurde? Wird diese dann ignoriert?

    Ich muss gestehen ich bin hier noch am probieren was genau alles so passiert. Diese Option soll die Zeit verkürzen falls schon Dateien vorhanden sind die mit

    Code
    -c     aktiviert einen Dateivergleich, basierend auf Prüfsumme und nicht auf Größe und Zeitstempel. 

    ermittelt wurden.

    PC: AMD Ryzen 7 5700X | AMD RX6600 | 32GB RAM | Debian 12 Xfce
    Notebook: AMD Ryzen 5 5300U | Vega Graphic | 16GB RAM | Debian 12 Xfce

  • Ich muss gestehen ich bin hier noch am probieren was genau alles so passiert. Diese Option soll die Zeit verkürzen falls schon Dateien vorhanden sind die mit

    Code
    -c     aktiviert einen Dateivergleich, basierend auf Prüfsumme und nicht auf Größe und Zeitstempel. 

    ermittelt wurden.

    Die Option --ignore-existing scheint tatsächlich Dateien zu ignorieren, die im Ziel bereits vorhanden sind, auch wenn diese in der Quelle verändert werden. Die Option -c hatte keinen Einfluss darauf.

  • Prüft, ob die Verzeichnisse Inhalte haben (also eingebunden sind). Wenn nein, dann wird das Script mit "exit 1" beendet.

    Damit hast du aber immer noch das problem wenn unter dem gleichen Pfad was anderes eingebunden ist.

    Ich konnte gar nicht so schnell reagieren, wie 7 TB an Daten auf der Backup-Festplatte gelöscht wurden. Autsch!

    Wie konnte denn das ~/ verzeichnis fehlen?

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

    System: TUXEDO Aura 15 - Gen1, AMD Ryzen 7 4700U, 32GB RAM, 1TB M.2 SATAIII, EndeavourOS(Gnome[Wayland])

  • Damit hast du aber immer noch das problem wenn unter dem gleichen Pfad was anderes eingebunden ist.

    Es ist zwar sehr unwahrscheinlich, dass ich unter dem Verzeichnis ~/Filme nun etwas anderes reinhänge, aber natürlich theoretisch möglich. Vielleicht auch nur versehentlich etwas reinkopiert.

    Ich könnte in die einzubindenen Laufwerke z. B. eine Textdatei mit dem Inhalt 123456 reinstellen und dann in dem Script gezielt nach Datei + Inhalt abfragen. Nur wenn beides übereinstimmt, dann läuft das Backup. Das sollte dann sicher sein.

    Wie konnte denn das ~/ verzeichnis fehlen?

    Verstehe ich nicht ganz.

    Ich wollte das Verzeichnis ~/Filme auf die externe Festplatte sychronisieren. Da unter Filme aber dummerweise nicht das NAS-Verzeichnis eingebunden war, blieb das lokale Verzeichnis ~/Filme ohne Inhalt. Und nach Durchlauf des Scripts war dann auch das Verzeichnis /Filme auf der externen Festplatte leer. ;)

  • Ich könnte natürlich auch wie harihegen rsync über ssh laufen lassen. Dann hätte ich das Problem des Einbindens nicht.

    Code
     rsync -av --progress user@SERVER-IP:/srv/Filme /extPlatte/Filme

    Dafür nervt dann aber die Abfrage des Passworts. :(

  • SSK Key anlegen

    Das war das Stichwort. SSH-Key hatte ich zwar schon, hat aber nicht gegriffen, weil ich den Key nicht angegeben hatte. Hätte der Key einen Standardnamen wie id_rsa gehabt, dann hätte es auch gleich geklappt.

    Habe die SSH-Zugänge in der ~/.ssh/config definiert

    Code
    Host server
        HostName 192.168.178.50
        User xxx
        IdentityFile ~/.ssh/id_home

    Damit klappt es dann auch ohne Passwort. :)

    Code
    rsync -av --progress server:/srv/Filme /extPlatte/Filme
  • Die Option --ignore-existing scheint tatsächlich Dateien zu ignorieren, die im Ziel bereits vorhanden sind, auch wenn diese in der Quelle verändert werden. Die Option -c hatte keinen Einfluss darauf.

    Das war der Plan, weil es riesige Dateien mit 100GB gibt und wenn da die Prüfsumme gebildet werden soll und das lange dauern könnte dann soll er das doch bitte sein lassen, diese Fälle würde ich lieber manuell kopieren wollen.

    Ob das gut ist weiß ich noch nicht, eine weitere, neben vielen Baustellen.

    Ja, ich hab das mit dem ssh key gemacht obwohl das immer irgendwie umständlich ist und man ständig damit durcheinander kommt. Aber anders geht es ja nicht wenn man mit einem Script irgendwo drauf will.

    PC: AMD Ryzen 7 5700X | AMD RX6600 | 32GB RAM | Debian 12 Xfce
    Notebook: AMD Ryzen 5 5300U | Vega Graphic | 16GB RAM | Debian 12 Xfce

  • Ja, ich hab das mit dem ssh key gemacht obwohl das immer irgendwie umständlich ist und man ständig damit durcheinander kommt. Aber anders geht es ja nicht wenn man mit einem Script irgendwo drauf will.

    Für den täglichen Umgang miit SSH ist es auf jeden Fall hilfreich, wenn du dir eine .ssh/config anlegst.

    Dann reicht ein "ssh pihole" und du bist mit dem Pihole-Server verbunden. Brauchst keinen User, Port, Key oder IP-Adresse anzugeben, ist alles in der config hinterlegt.

    Und wenn du an mehreren Rechnern arbeitest, dann kopierst du den Key und die Config auf den neuen Rechner und hast deine gewohnte Umgebung.

    Einmal editiert, zuletzt von Sojan (22. April 2022 um 16:30)

  • Für den täglichen Umgang miit SSH ist es auf jeden Fall hilfreich, wenn du dir eine .ssh/config anlegst.

    Ja, die Idee ist gut.

    PC: AMD Ryzen 7 5700X | AMD RX6600 | 32GB RAM | Debian 12 Xfce
    Notebook: AMD Ryzen 5 5300U | Vega Graphic | 16GB RAM | Debian 12 Xfce

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!