私はrsyncを初めて使用します。外付けハードドライブ(ext3)があるLinuxコンピュータと、NTFS外付けハードドライブがあるWindowsコンピュータがあります。 NTFSハードドライブをLinuxコンピュータに接続し、ext3ドライブからミラーコピーを作成しました。その後、いくつかの新しいファイルをext3ドライブにコピーし、NTFSをWindowsシステムに再接続し、cygwinで次を実行しました。
rsync -Pratluvz user@linux_machine:/path/to/data /cygdrive/f/
最近追加されたデータを除外すると、データが同じであるため、同期が非常に高速になると予想しました。一般的な行は次のとおりです。
Documents/path/to/file.ext
2688670 100% 801.24kB/s 0:00:03 (xfer#1, to-check=2477/12876)
初期同期にはレプリカ自体と同じくらい時間がかかります。ただし、同期を停止して再開すると、中断された部分から始まります。最初の同期はマニフェストとファイルの書き込みが必要なので特別ですか?将来的には同期が速くなりますか? (「z」パラメータを何の効果もなく切り替え、「c」パラメータを削除したのに役立ちました。)
編集:ソースパスの末尾に「/」が含まれているため、データフォルダの内容はすべてコピーされましたが、フォルダ自体はコピーされていません。同期を停止して「/」を削除しましたが、もともと期待どおりに機能しました。
答え1
Rsync は、ターゲットツリーのコピーがターゲットツリーのコピーと同じであると判断された場合にのみファイルのコピーを防止します。デフォルトでは、ファイルサイズと変更時間が同じ場合、ファイルは同じと見なされます。 rsyncはチェックサムを計算するためのオプションを渡すことができます-c
(ターゲットツリーからファイル全体を読み取る必要があるためはるかに遅いです)。両側で同じサイズのrsyncスキップファイルを作成するオプションを渡すことができます--size-only
。これは内容が変更されましたが、新しいバージョンが以前のバージョンと同じサイズのファイルをスキップするため、危険です。
最初のコピーを作成したときにタイムスタンプを保持していないようです(例:またはcp -r
代わりに使用)。これが発生すると、rsyncはファイルの内容が同じかどうかを知りません。実行が完了すると、ファイルのタイムスタンプは同じであるため、rsyncはそのファイルを再コピーしないことに気付くでしょう。cp -rp
cp -a
rsync -a
ソースファイルとターゲットファイルシステムは異なるタイムスタンプ粒度(たとえば、秒からマイクロ秒)を使用するため、タイムスタンプも異なる場合があります。したがって、ファイル修正時間はソース側では2014-12-10 08:54:32.123465に似ていますが、2014-12-10 08:54:32 =ターゲット側の2014-12-10 08:54:32.000000).この場合、rsyncがそれを自動的に検出しない場合はこのオプションを渡します--modify-window
。たとえば、--modify-window=1
タイムスタンプに1秒の許容誤差を許可します。