Ich bin mit Python nicht vertraut. Ich verwende Standard-Unix-Befehle, um meine Gedanken zu veranschaulichen. Übersetzen Sie auf eigene Faust in Python.
Innerhalb eines einzigen Dateisystems, das vernünftig genug ist, mv
sollte es atomar sein . Wenn Sie Dateien in zwei Schritten verschieben möchten, dh cp
+ rm
, müssen Sie sicherstellen cp
, dass Sie erfolgreich waren rm
. Bei Atomic mv
besteht keine Gefahr, dass die Datei völlig unverletzt ist oder "die Hälfte hier, die Hälfte dort".
Das Wechseln von einem Dateisystem zu einem anderen mit mv
ist wie cp
+ rm
; mv
Wartet, bis die Kopieraufgabe erfolgreich abgeschlossen ist, bevor die Verknüpfung mit der ursprünglichen Datei aufgehoben wird. Es können jedoch immer noch wenige Dinge schief gehen.
Wie AFH kommentierte:
Um eine Datei zu kopieren, müssen Sie sie lesen können, aber um sie zu verschieben, benötigen Sie Schreibzugriff auf die Quell- und Zielverzeichnisse, ohne dass die zu verschiebende Datei gelesen werden muss.
Wahr. Es gibt jedoch eine Möglichkeit, eine Datei innerhalb eines Dateisystems zu "kopieren", ohne sie zu lesen: Erstellen Sie einen Hardlink. Stellen Sie sicher, dass Sie den Unterschied verstehen .
Wenn Sie immer noch in zwei Schritten auf es zu tun bestehen, statt cp
+ rm
versuchen ln
+ rm
zuerst. Natürlich müssen Sie sicherstellen, dass ln
Sie vor Ihnen gearbeitet haben rm
. Ein Versuch, eine geräteübergreifende Verknüpfung zu erstellen, schlägt fehl. In diesem Fall sollten Sie auf cp
+ zurückgreifen rm
(und ich denke, es gibt keine Möglichkeit, dies ohne das Lesen der Datei zu tun).