web-dev-qa-db-ja.com

rsync --remove-source-filesは、ソースファイルを1つずつ、またはrsyncの完了後に削除しますか?

フォルダーの内容を別のマシンにコピーするアプリケーションにrsyncコマンドがあります。オプション--remove-source-files興味があるのは、rsyncが終了した後、宛先マシンにファイルを置くことだけです。

ただし、ファイルの転送中にクラッシュまたは中断された場合、rsyncはどのように動作するのでしょうか。

同期する2つのファイル、abがあるとします。 rsyncはaをコピーしてからソースから削除し、bのコピーを開始するか、abの両方がにコピーされるのを待ちますそれら両方を削除する前に宛先マシン?いくつかのフラグを持つ無関係なファイルを削除するときにこの動作を設定できることを確認しましたが、ソースファイルの削除については何も見つかりませんでした。

23
brafales

Rsyncコードを確認すると、送信時にソースファイルが削除されていることがわかりますが、すぐには実行されない場合があります。 rsyncはその操作を多重化するため、ファイルが正常に受信された(したがって削除できる)ことを示すメッセージは、他のデータの背後にバッファリングされる可能性があります。

16
Kyle Jones

私はそれを試しました(確かにあなたも簡単にそれを行うことができました)。 allファイルが正常に転送された後に削除されます。転送が中断された場合、または別のエラーが発生した場合、一部のファイルが正常に転送されても、ソースファイルは削除されません。

編集:カイルジョーンズの回答のとおり、多くのファイルが関係している場合は、ケースが異なる場合があります。

4