Rsync – Was macht das Flag -b (Backup) konkret?

Rsync – Was macht das Flag -b (Backup) konkret?

Ich verstehe nicht, was das Flag -b bewirkt. Laut der offiziellen Dokumentation:

Mit dieser Option werden bereits vorhandene Zieldateien beim Übertragen oder Löschen jeder Datei umbenannt.

Aber ich verstehe nicht, was das bedeutet. Wie kann man eine Datei umbenennen, die gelöscht wird? Was hat das Umbenennen von Dateien mit Backups zu tun? Nach dem Aufruf von rsync mit -b wurden keine Dateien umbenannt:

rsync --delete -bavh

Und wenn ich verschiedene Tutorials durchgehe, wird diese Option nie wirklich verwendet. Ist sie also wirklich nützlich?

Was wäre der Unterschied zwischen

rsync --delete -bavh

Und

rsync --delete -avh

Es ist vielleicht auch nicht sinnvoll, aber mein Anwendungsfall ist der folgende: Ich möchte eine Sicherungskopie meines Desktops auf einem gemounteten WebDAV-Laufwerk erstellen. Die Sicherung wird jeden Tag zu einer bestimmten Zeit automatisch ausgeführt.

Antwort1

Der Zweck dieser backupOption besteht darin, eine Kopie aller überschriebenen und/oder entfernten Dateien aufzubewahren.

Es kann verwendet werden, --backup-dirum diese Dateien in einem anderen Verzeichnis als dem Zielverzeichnis zu speichern.

Mit der Option können Sie zusätzlich ein Backup-Suffix angeben --suffix, das an den Dateinamen angehängt wird. Ohne dieses Suffix backup-dirbehalten die im angegebenen Verzeichnis gesicherten Dateien ihren ursprünglichen Dateinamen. Mit diesem Suffix können die Dateien umbenannt werden und bleiben im ursprünglichen Verzeichnis (was backup-dirnicht erforderlich ist).

Bei Verwendung ist also entweder „ backup-diroder“ --suffixerforderlich .backup

Antwort2

Habe damit gespielt. Das habe ich herausgefunden.

Verwenden Sie --backup und --backup-dir, um eine Art inkrementelles Backup zu erstellen.

Angenommen, Sie haben diesen Code:

# test date with a timestamp:
date +%F_%H-%M-%S
2024-03-06_19-48-08

#
SRC=your/cooldir
DST=backups
INCDIR="${DST}/inc_$(date +%F_%H-%M-%S)"
rsync -avh --backup --backup-dir="$INCDIR" "$SRC/" "$DST/"

Wenn Sie dies zum ersten Mal ausführen, erhalten Sie „backups/cooldir“, also eine vollständige Sicherung (eine Spiegelsynchronisierung) Ihres/cooldir.

Fügen Sie nun eine Datei newfile.txt zu Ihrem/cooldir hinzu. Führen Sie den Code erneut aus. Es wurden keine Dateien gelöscht oder geändert, daher wird INCDIR nicht erstellt.

Löschen Sie nun your/cooldir/newfile.txt. Führen Sie den Code erneut aus. Da diese Datei gelöscht wurde und --backup und --backup-dir angegeben wurden, erhalten Sie wie zuvor Backups/cooldir (eine vollständige Sicherung), aber Sie erhalten auch das Verzeichnis Backups/inc_2024-03-06_19-57-23. In diesem inkrementellen Verzeichnis erhalten Sie newfile.txt. Es ist dort, weil es gelöscht wurde.

Sie können dies erneut versuchen, indem Sie newfile2.txt erstellen, ausführen und dann beim zweiten Ausführen einfach newfile2.txt ändern (nicht löschen). Sie erhalten newfile2.txt erneut im Ordner „backups/inc_xx“.

Probieren Sie nun den Code aus, ändern Sie jedoch diese Zeile:

INCDIR="${DST}/inc_$(date +%F)"

Und führen Sie diese Szenarien erneut aus. Beim ersten Mal erhalten Sie newfile.txt in Backups/inc_2024-03-06. Beim zweiten Mal haben Sie sowohl newfile.txt als auch newfile2.txt im selben Verzeichnis. Mit anderen Worten: --backup und --backup-dir sind nicht gerade inkrementelle Sicherungen. Es ist eher eine Ansammlung der letzten Änderungen/Löschungen an Dateien.

Versuchen Sie abschließend diese Änderung:

rsync -avh --backup "$SRC/" "$DST/"

Dieses Mal werden die geänderten und gelöschten Dateien mit einer Tilde umbenannt, z. B. newfile.txt~

verwandte Informationen