Ich muss unter Ubuntu einige Dateien von einem Dateisystem in ein anderes verschieben. Es ist jedoch sehr wichtig, dass die Dateien am Zielort niemals als teilweise oder unvollständige Dateien vorhanden sind, zumindest nicht unter dem richtigen Dateinamen.
Bisher besteht meine einzige Lösung darin, ein Skript zu schreiben, das jede Datei aufnimmt, sie in einen temporären Namen am Ziel kopiert, sie am Ziel in den ursprünglichen Dateinamen umbenennt (was meines Erachtens atomar sein sollte) und schließlich die Ursprungsdatei löscht .
Das Schreiben und Debuggen eines Skripts scheint jedoch für diese Aufgabe überflüssig zu sein. Gibt es einen Weg oder ein Werkzeug, das dies bereits von Haus aus tut?
Antworten:
rsync
kopiert in temporäre Dateinamen (siehe z. B. Rsync temporäre Dateierweiterung und Rsync - erstellt es während der Übertragung eine temporäre Datei ? ), sofern Sie diese--inplace
Option nicht verwenden. Sie werden erst umbenannt, nachdem die Datei erfolgreich übertragen wurde.rsync
löscht auch alle Zieldateien, die nur teilweise übertragen wurden (z. B. aufgrund einer vollen Festplatte oder eines anderen Fehlers).Es gibt auch eine
--remove-source-files
Option, mit der die Quelldatei (en) nach erfolgreicher Übertragung gelöscht werden.rsync
Weitere Informationen finden Sie auf der Manpage.Wenn Sie das alles zusammenfassen, können Sie Folgendes verwenden:
Diese Option ist besonders nützlich für Aufgaben wie das Verschieben von Dateien aus einer "eingehenden" Warteschlange oder ähnlich dem Verzeichnis, in dem sie verarbeitet werden.
Wenn es sich um einen einmaligen Spiegel handelt, können Sie ihn alternativ auch
rsync
ohne die--remove-source-files
Option verwenden. Sie können die Quelldateien später löschen, wenn Sie möchten / müssen.quelle
rsync
möglich wäre, und ich wusste, dass es Dateien mit einem temporären Namen übertrug (sofern Sie ihn nicht verwenden--inplace
), also habe ich nachgeschaut inman rsync
und gefunden--remove-source-files
.rsync
ist ein gutes Werkzeug, um zunächst fast jede Dateiübertragungsaufgabe zu überprüfen.