SRC から DEST に rsync し、DEST ファイルを確認してから SRC ファイルを削除するにはどうすればよいでしょうか? (rcursively)

SRC から DEST に rsync し、DEST ファイルを確認してから SRC ファイルを削除するにはどうすればよいでしょうか? (rcursively)

私は、これらの2つの変数によって保持されるbashスクリプトに2つのディレクトリを持っています

$SRC

$宛先


どうすればいいでしょうかrsync

  1. $SRC/ から $DEST/ にファイルをコピーします。
  2. $DEST/* ファイルが $SRC/ ファイルと一致していることを確認します (最適な一致が利用可能ですが、時間がかかります)
  3. そして $SRC/ ファイルを削除しますか?

Google で検索すると、rsync を実行してから DEST ファイルを削除する例が示されます。

理解できません。なぜrsync宛先ディレクトリに を実行してから削除するのでしょうか?

Google 検索をして私の言っている意味を確認してください。

答え1

ファイルを移動するオプションは です--remove-source-filesマニュアルページここでいくつかの議論を参照してください: https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files-between-directories

rsync は常にチェックサムを使用してファイルを検証しますが、それが懸念事項に十分であるかどうかはあなた次第です。宛先からのチェックサムはディスクへの書き込み後ではなく転送時に計算されるので、結果のファイルに基づいて計算されず、書き込み時に OS からエラーが発生しない限り失敗することはありません。これについては、次の場所で議論されています。 https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied-between-two-local-drives

これがニーズに十分でない場合は、ソースを削除せずにファイルを rsync するスクリプトを作成し、 で再度 rsync を実行して-cチェックサムが一致しないファイルを選択/コピーし、最後に などでソース ファイルを削除することを検討してrmください。

答え2

rsyncこれはの--remove-source-filesオプションの直接的な使用法であるはずです

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

コマンドが期待どおりに動作することを確認したら、を削除します--dry-run(場合によっては も)。--stats

関連情報