Ich habe einen rsync-Befehl in einer Anwendung, der den Inhalt eines Ordners auf einen anderen Computer kopiert. Ich habe die Option, --remove-source-files
weil ich nur daran interessiert bin, die Dateien auf dem Zielcomputer zu haben, nachdem der rsync abgeschlossen wurde.
Allerdings habe ich mich gefragt, wie sich rsync verhält, wenn es beim Übertragen von Dateien abstürzt oder unterbrochen wird.
Angenommen, ich muss zwei Dateien synchronisieren a
und b
. Wird Kopie rsync a
, löschen Sie es dann von der Quelle, und starten Sie das Kopieren b
, oder wird es für beide warten a
und b
bevor sie beide Löschen auf die Zielmaschine kopiert werden? Ich habe gesehen, dass Sie dieses Verhalten konfigurieren können, wenn Sie fremde Dateien mit einigen Flags löschen, aber keine Informationen zum Entfernen von Quelldateien gefunden haben.
quelle
Antworten:
Das Überprüfen des rsync-Codes zeigt, dass Quelldateien beim Senden entfernt werden, obwohl dies möglicherweise nicht sofort der Fall ist. rsync multiplext seine Operationen, sodass die Nachricht, dass eine Datei erfolgreich empfangen wurde (und daher gelöscht werden kann) möglicherweise hinter anderen Daten gepuffert wird.
quelle
Ich habe es versucht (und Sie könnten es auch leicht tun, um sicher zu sein). Sie werden entfernt, nachdem alle Dateien erfolgreich übertragen wurden. Wenn die Übertragung unterbrochen wird oder ein anderer Fehler auftritt, werden die Quelldateien nicht entfernt, auch wenn einige von ihnen ordnungsgemäß übertragen wurden.
BEARBEITEN: Laut Kyle Jones 'Antwort kann der Fall anders sein, wenn viele Dateien betroffen sind.
quelle