web-dev-qa-db-ja.com

cpまたはrsync、cpは本当に価値がありますか?

事実上すべての状況でcp(1)よりもrsync(1)を使用する適切な理由を見つけることができないため、これが実際の回答なしの質問として数えられないことを願っています。通常、rsyncよりもcpを優先する必要がありますか?それらを使用するための良いガイドラインはありますか?

  • rsync:差分を転送します。圧縮を使用でき、リモートで(安全に)使用できます。単一の大きなファイルの転送中でも、中断されても再起動できます。 」

  • cp:たぶん使用する方が簡単なのでしょうか? rsyncより高速ですか?

8
Soyuz

cpはcoreutilsの一部であるため、どこにでも存在します。さらに、主に1台のコンピューター内でファイルをコピーするように設計されました。

rsyncはcoreutilsの一部ではありません。デフォルトの環境でも存在しません。さらに、主にネットワーク経由でファイルを転送するように設計されました。また、rsyncはcoreutilsに比べて依存関係が多くなっていますが、この違いはあまり意味がありません。

PS:ちなみに、組み込みシステムではまだCPU使用率が問題です。

9
rush

すべてのコピー操作でrsyncを使用したくない主な理由は、rsyncに計算オーバーヘッドがあるためです。データ転送が実際に始まる前に、rsyncはすべてのファイルをスキャンします。次に、各ファイルの前に、比較が行われます。このオーバーヘッドは取るに足らないものではありません。2012年に利用できる高速のCPUがあっても、このタイプの転送は常に行われます。かなりまともなサイズのサーバーでは、ギグのデータの処理を開始すると、オーバーヘッドに時間がかかる可能性があります。

転送時間を節約できる場合は、rsyncを使用しないでください。まったく使用しないでください。rsyncを使用してください。 rsyncが同じことを達成できる場合は、cpを使用しないでください。

私が通常行うことは、最初に通常のコピー方法を使用してデータを引き継ぐことです。次に、後続の変更のためにrsyncを実行します。これは、これらのdiffを利用できる場合です。

6
J. M. Becker

cpwritesを削減できるのに対し、diffsを使用しないため、ローカルでコピーする場合、rsyncはローカルでコピーするときに[〜#〜] cpu [〜#〜]を使用することを期待します。いずれにしてもファイル/差分全体を読み書きする必要があり、追加の計算が必要になるため、ローカルでの圧縮は避けてください。

3
scai

大きなまたは存在しないdiffの場合のオーバーヘッドとは別に、rsyncにはcp --reflink=alwaysと同等のものがないように見えます。これにより、それをサポートするファイルシステム内でコピーすると、大量のデータを節約できます(コピーオンライトコピーを作成するため、オリジナルとコピー(もちろん、最初はすべてすべて)の間で共通のデータは一度だけ保存されます)。ただし、rsyncpdating CoWコピーで、--inplaceを使用した方が優れています。

3
Darael