web-dev-qa-db-ja.com

違いの代わりにファイル全体をコピーするrsync

いくつかのファイルを含む2つのリモートフォルダがあります。私はrsyncを使用して2を同期しています。最初のサーバーでは、ファイルには毎日新しいデータが厳密に追加されています。

rsyncを呼び出すと、ファイル全体が再度コピーされるように見えます。

以下の私の電話は正しいですか?

  rsync -rtvu src_fld/  user@myserver:/opt/dst_fldr/

私の理解では、rsyncは2つのファイルの差を計算できるので、非常に迅速な更新を期待していました。

rsyncは多くのことを行っています-あなたの場合、それはおそらく両側でファイルリストを構築し、それらを比較し、転送するファイルを見つけ、両側でファイルを読み取ります 両側でローリングチェックサムを計算します 、チェックサム情報を交換し、異なるブロックを送信します。特に大きなファイル(ギガバイトスケール)または多数のファイル(数十万の大きさ)がある場合、このプロセスには時間がかかります。送信者と受信者の計算とI/Oのオーバーヘッドが大きいため、必ずしも送信速度が上がるとは限りません。リンクを介して転送されるデータの量。

あなたの場合、ファイルの変更が追加のみである場合(ログの増加の場合のように)、rsync--append-verifyオプションを使用することを検討してください。これにより、計算量の多いローリングチェックサム計算全体がスキップされ、転送されるだけです。小さいファイルを埋めるために大きいファイルの末尾。また、転送後に、単一ファイルのチェックサム操作を実行して、送信者と受信者のファイルが同一であるかどうかを確認します。

3
the-wabbit