rsync --recursive --ignore-existing foo bar
名前の大きいディレクトリツリーに対してコピーコマンドを実行していますが、foo
コマンドが途中で中断されたとします。たとえば、ターゲットシステムの突然の停電が原因です。
上記のコマンドを再実行すると、すでに存在するファイル/ディレクトリの時間を大幅に節約できます。完全宛先にコピーしますbar
。しかし、コピーしているファイルはどうなりますか?おそらくファイルが不完全/破損した状態でターゲットに存在しますか?もちろん、単に「完成したファイル」と無視することは非常に望ましくありません。
rsyncは指示なしにこの(極端なランタイム)シナリオをインテリジェントに処理できますか? (それではどうですか?)または、より多くのもの、または他の指示を介してそうするように具体的に指示された場合にのみ?
残念ながら、このサイトのマニュアルページや不明瞭に関連する質問や回答のどれも、この非常に重要な詳細を明確な方法で扱っていないようです。 (見にくくなったらすみません。)
答え1
この-c
オプションを使用すると、日付とサイズの代わりにチェックサムを計算して比較し、rsyncスキップファイルを作成できます。
-c, --checksum
skip based on checksum, not mod-time & size
これにより、誤った内容を含むすべてのファイルが再コピーされます。
この--ignore-existing
フラグも削除する必要があります。それ以外の場合、ターゲットにすでに存在するファイルは転送されません。