it-swarm.com.de

Was sind die Unterschiede zwischen den rsync-Löschoptionen?

Ich sehe auf der rsync man page , dass es eine Reihe von delete -Optionen gibt, verstehe aber die Unterschiede zwischen ihnen nicht wirklich. Was sind die Unterschiede zwischen diesen Optionen?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs
111
Skilldrick
  • --del/--delete_during: Löscht Dateien aus dem Zielverzeichnis, während sie kopiert werden (spart Speicher im Vergleich zu --delete-before: --delete-before führt einen separaten Scan durch, um nach Löschelementen zu suchen)

  • --delete: Löscht Dateien im Zielverzeichnis, wenn sie nicht im Quellverzeichnis vorhanden sind.

  • --delete-before: Löschen Sie die Dateien im Zielverzeichnis, bevor Sie die gleichnamige Datei aus dem Quellverzeichnis kopieren

  • --delete-during: Löscht Dateien im Zielverzeichnis, während die gleichnamige Datei aus dem Quellverzeichnis kopiert wird

  • --delete-delay: Während der Übertragung als gelöscht markieren, aber warten, bis die Übertragung abgeschlossen ist

  • --delete-after: Empfänger wird nach der Übertragung gelöscht, nicht vor ... Wenn ein anderer Teil von rsync zusätzliche Dateien an einen anderen Ort verschoben hat, möchten Sie dies anstelle von --delete-delay, da --delete-delay entscheidet, was während der Übertragung gelöscht wird, während --delete-after dies überprüft das Verzeichnis für Dateien, die gelöscht werden sollen, nachdem alles fertig ist.

  • --delete-excluded: Löscht Dateien aus dem Zielverzeichnis, die ausdrücklich von der Übertragung aus dem Quellverzeichnis ausgeschlossen sind.

Der Punkt von rsync wird nicht kopiert, sondern archiviert. Dies ist eine wichtige Unterscheidung. Die Verarbeitung gelöschter/geänderter Dateien ist kritisch und in vielen Fällen differenziert.

Insbesondere die --delete Flagge ist eine, die ich schon oft vermasselt gesehen habe. Viele Benutzer verwenden rsync, um Dateien in den Speicher mit niedriger Priorität zu verschieben. In diesem Fall möchten Sie, dass die zu verschiebenden Dateien weiterhin im Zielverzeichnis EXISTIEREN. Dies ist nicht die Aufgabe von delete: --delete stellt sicher, dass beim Löschen einer Datei aus dem Quellverzeichnis diese AUCH aus Ihrem Zielverzeichnis gelöscht wird, damit Ihr Ziel nicht mit Junk voll wird Sichern Sie, indem Sie ein neues Laufwerk einlegen und das nächtliche rsync-Skript nicht deaktivieren. Das Skript hat festgestellt, dass das Quellverzeichnis jetzt leer ist und alle Dateien im Zielverzeichnis gelöscht wurden, damit sie übereinstimmen.

Die meisten anderen Optionen beziehen sich auf den Platz oder die Leistung. Wenn Sie die Dateien löschen, ist dies wichtig, wenn Sie sicherstellen möchten, dass die Übertragung erfolgreich ist, bevor Sie etwas tun. Wenn Ihr Gerät jedoch zu klein ist, um 2 Kopien aller Informationen zu verarbeiten, müssen Sie die Daten nach und nach löschen wenig verrückt wegen seiner langen Geschichte über mehrere Plattformen hinweg: Es wurden einige Optionen hinzugefügt, damit Menschen, die an bestimmtes Verhalten gewöhnt waren, nicht verwirrt werden.

108
Satanicpuppy

Ein weiterer erwähnenswerter Punkt ist, dass rsync, wenn Ihr Quellverzeichnis mit /* endet, nur diese Dateien berücksichtigt und nicht das Verzeichnis selbst (und damit das Fehlen von Dateien, die Sie auf dem Ziel löschen möchten).

Wenn Sie oben eine Löschoption angeben, rsync jedoch nicht gelöscht werden soll, stellen Sie sicher, dass Sie nicht versehentlich eine Globierung durchführen und eine Liste der Dateien angeben, wenn Sie das Verzeichnis selbst meinen.

1

Es sind zwei Dinge im Gange:

  1. Wer löscht das?
  2. Wenn es passiert

Entweder der Absender oder der Empfänger können angewiesen werden, das Löschen durchzuführen (ich bin mir nicht sicher, warum dies wichtig ist). Wenn also rsync von einem Computer mit dem rsync-Server auf der anderen Seite verbunden wird, bestimmt dies, wer den Löschbefehl tatsächlich ausgibt.

Wenn es passiert, ist es ziemlich einfach ... vorher bedeutet, dass alle Dateien gelöscht werden und DANN rsync über die Dateien kopiert. Während des Durchlaufens der Dateiliste werden diese gelöscht, und nach dem Durchlauf wird gewartet, bis alle Dateien übertragen wurden. Anschließend wird die entfernte Seite gelöscht. Dies ist nur dann von Bedeutung, wenn die Übertragung unterbrochen wird.

1
Michael Pryor