rsync --remove-source-files löscht Quelldateien einzeln oder nach Abschluss von rsync?

23

Ich habe einen rsync-Befehl in einer Anwendung, der den Inhalt eines Ordners auf einen anderen Computer kopiert. Ich habe die Option, --remove-source-filesweil 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 aund 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 aund bbevor 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.

Brafalen
quelle
Ähnlich wie stackoverflow.com/questions/7380234/… obwohl ich denke, dass Kyle Recht hat - manchmal scheint es, dass Rsync auf den Abschluss aller Dateien wartet, aber manchmal werden die Dateien vor dem Abschluss gelöscht. Immer noch ein bisschen verwirrt.
Chris2048

Antworten:

16

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.

Kyle Jones
quelle
2
Nach meiner Antwort unten habe ich es mit ein paar Dateien versucht, und Dateien wurden nur gelöscht, wenn der gesamte Vorgang erfolgreich war. Das lässt mich denken, dass das von Ihnen gefundene "Transfer OK" -Signal nur durchdrungen ist, wenn der gesamte Vorgang erfolgreich ist.
Daniel Andersson
5
Wenn Sie es mit mehreren Dateien versuchen, werden die Quelldateien ausgeblendet, bevor die gesamte Übertragung abgeschlossen ist.
Kyle Jones
es sieht so aus, als würden bei der Angabe von Verzeichnissen und der rekursiven Option Dateien in a nicht sofort gelöscht
Andre Holzner
4

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.

Daniel Andersson
quelle