Wie kann ich per rsync von SRC zu DEST durchführen, die DEST-Datei überprüfen und dann die SRC-Datei löschen? (rcursively)

Wie kann ich per rsync von SRC zu DEST durchführen, die DEST-Datei überprüfen und dann die SRC-Datei löschen? (rcursively)

Ich habe zwei Verzeichnisse in einem Bash-Skript, die von diesen beiden Variablen gehalten werden

$SRC

$DEST


Wie mache ich einersync

  1. Kopieren von Dateien von $SRC/ nach $DEST/,
  2. Überprüfen, ob die $DEST/*-Dateien mit den $SRC/-Dateien übereinstimmen (beste verfügbare Übereinstimmung, jedoch langsam)
  3. und dann die Datei $SRC/ löschen?

Bei allem, was ich google, gibt es ein Beispiel für die Ausführung eines rsync und das anschließende Löschen der DEST-Datei.

Ich verstehe das nicht. Warum sollte man einen rsyncin ein Zielverzeichnis kopieren und es dann löschen?

Machen Sie eine Google-Suche und sehen Sie, was ich meine.

Antwort1

Die Option zum Verschieben einer Datei ist --remove-source-files. Hier ist diemanpage, und hier finden Sie einige Diskussionen: https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files-between-directories

Beachten Sie, dass rsync Dateien immer anhand von Prüfsummen überprüft. Es liegt jedoch an Ihnen, ob dies Ihren Anforderungen genügt. Es ist wichtig, dass die Prüfsumme vom Ziel bei der Übertragung und nicht nach dem Schreiben auf die Festplatte berechnet wird. Sie wird also nicht auf Grundlage der resultierenden Datei berechnet und es tritt kein Fehler auf, es sei denn, beim Schreiben tritt ein Fehler des Betriebssystems auf. Einige Erläuterungen dazu finden Sie hier: https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied-between-two-local-drives

Wenn dies für Ihre Anforderungen nicht ausreicht, können Sie ein Skript schreiben, um die Dateien per rsync zu synchronisieren, ohne die Quelle zu löschen. Führen Sie rsync dann erneut aus, um -cDateien auszuwählen/zu kopieren, deren Prüfsumme nicht übereinstimmt, und löschen Sie die Quelldateien anschließend mit rmoder was auch immer.

Antwort2

Dies sollte eine unkomplizierte Verwendung der rsyncOption --remove-source-filessein.

rsync --dry-run --stats -av --remove-source-files "$SRC/" "$DEST/"

Entfernen Sie --dry-run(und möglicherweise --stats), wenn Sie zufrieden sind, dass der Befehl das tut, was er tun soll.

verwandte Informationen