2 つのファイルがあるディレクトリがあるとします。どちらも同じで、かなり大きい (たとえば、それぞれ 2 GB) です。そのディレクトリをリモート ホストに rsync したいとします。私の理解では (間違っているかもしれませんが)、rsync はファイルのチェックサムを計算します。同じチェックサムを持つ 2 つのファイルを見つけたら、最初のファイルをコピーし、2 番目のファイルをリモート ホストにローカル コピーするだけでよいのではないでしょうか。そうすれば、より高速になりませんか?
同様に、rsync はコピーする前にすべてのリモート ファイルをハッシュしませんか? 転送されるファイルと同じハッシュを持つ別のファイルが見つかった場合、リモート ホスト上でローカル コピーを実行できます。
rsync はこのような機能をサポートしていますか? これを有効にする方法はありますか? この種の「ハッシュ ベース」のローカル コピーを実行する rsync に似たツールはありますか?
答え1
同様に、rsync はコピーする前にすべてのリモート ファイルをハッシュしませんか? 転送されるファイルと同じハッシュを持つ別のファイルが見つかった場合、リモート ホスト上でローカル コピーを実行できます。
いいえ、でもユニゾンそうします。
答え2
現在、単一のソフトウェア パッケージとしてこれを実行する準備ができている製品は存在しないと思います。これを実行する WAN 最適化ツールはありますが、その場合でも RSYNC は実行できます。
探しているのは、重複排除/再重複プロセスです。理想的には、実際に再重複するのではなく、ローカルで重複排除してから RSYNC を実行します。そうすれば、反対側でファイルを拡張するのではなく、リンクのみをコピーすることになります。
答え3
両方のファイルが本当に同一である場合は、ファイルの 1 つを rsync し、rsync プロセスの外部でリモート側にローカル コピーを個別に作成する必要があります。
同一のファイルが 2 つある場合、rsync は両方をコピーしようとします。チェックサムではなくファイル名が最も重要な識別子です。(私はこれをラップトップでテストしました!)
ただし、あなたが言及したいくつかのことを実行するには rsync をラップすると面白いでしょう...
これらは一読の価値があります:
答え4
--fuzzy オプションかもしれないあなたが探しているものを実行します:
man ページから:
-y, --fuzzy
このオプションは、rsync に、見つからない宛先ファイルの基礎ファイルを探すように指示します。現在のアルゴリズムは、宛先ファイルと同じディレクトリで、サイズと変更時刻が同じファイル、または同様の名前のファイルを探します。見つかった場合、rsync はファジー基礎ファイルを使用して転送を高速化しようとします。
そうでない場合は、関連するプログラミング スキルを持つ人なら、説明どおりに動作するようにオプションを微調整することが非常に簡単にできるはずです。ただし、おそらくそれはあなたが関わりたくないことです。