私は、これらの2つの変数によって保持されるbashスクリプトに2つのディレクトリを持っています
$SRC
$宛先
どうすればいいでしょうかrsync
- $SRC/ から $DEST/ にファイルをコピーします。
- $DEST/* ファイルが $SRC/ ファイルと一致していることを確認します (最適な一致が利用可能ですが、時間がかかります)
- そして $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