ほとんどすべての状況でcp(1)
overを使用すべき妥当な理由を見つけることができないようです。rsync(1)
人々は一般的に好みを持つべきですかrsync
?cp
使用に関する良いガイドラインはありますか?
rsync
:Transfer diff、圧縮が有効になり、リモートで(安全に)使用でき、単一の大容量ファイルの転送中に中断された場合は再起動できます。 'cp
:たぶん使いやすくなりますか? rsyncより速いですか?
答え1
cp
coreutilsの一部なので、どこにでもあります。また、基本的に単一のコンピュータ内からファイルをコピーするように設計されています。
rsync
coreutilsの一部ではなく、デフォルト環境にも存在しません。また、主にネットワーク経由でファイルを転送するように設計されています。 coreutilsよりもrsync
依存性が高いが、その違いは大きな意味を持たない。
PS:ところで、CPU使用率は組み込みシステムでは依然として重要です。
答え2
rsync
すべてのコピー操作に使用したくない主な理由は、rsync
計算オーバーヘッドによるものです。データ転送が実際に開始される前に、rsync
すべてのファイルがスキャンされます。次に、各ファイルの前に比較を実行します。 2012年に高速CPUが登場しても、このようなオーバーヘッドは小さくありません。私はいつもこのタイプの転送を実行しますが、かなり大きなサーバーでは、大量のデータ処理を開始するとオーバーヘッドのために時間がかかることがあります。
rsync
まったく使用しないでください。rsync
いつでも使用すると、転送時間を節約できます。同じことをする rsync
ときにwhenを使用しないでください。cp
私が主にすることは、通常のコピー方法を使用して最初にデータをインポートすることです。その後、その後の変更がrsync
行われ、この時点でこれらの違いを活用できます。
答え3
cp
あまり書いてほしいCPUローカルにコピーする場合はdiffを使用しないため、rsync
削減できます。書くdiffを使用するとき。とにかく、ファイル/差分全体を読み書きする必要があり、追加の計算が必要なため、ローカル圧縮は避けるべきです。
答え4
違いが大きい場合や存在しない場合のオーバーヘッドを除いて、同等のものがないようにrsync
見え、cp --reflink=always
それをサポートするファイルシステムにコピーすると、大量のデータを節約できます。コピーが作成されるため、元のデータとコピー間の共通データ(最初はすべてのデータが一度だけ保存されます)。 rsync
しかし、より良い更新中CoWのコピー、を使用しなさい--inplace
。