Rsyncを実行して、ディレクトリを外部USB HDDに同期しています。約150ギガのデータです。 50000以上のファイルを推測します。
現在実行中ですが、最初の同期ですが、ファイルをコピーする速度はわずか1〜5 MB /秒です。 USB 2.0エンクロージャの場合、これは信じられないほど遅いようです。ドライブでも他の転送は行われていません。
使用したオプションは次のとおりです。
rsync -avz --progress /mysourcefolder /mytargetfolder
Ubuntu Server 9.10を実行しています。
最初の同期には、
cp -a /mysourcefolder /mytargetfolder
rsyncは、宛先が空の場合にのみオーバーヘッドを追加します。
また、-zオプションはパフォーマンスを低下させる可能性があります。低速リンクを介してデータを転送しない場合は、このオプションを使用しないでください。
同じマシンで高速ネットワークまたはディスクツーディスクでrsyncを使用している場合、
not圧縮を使用-z
--inplaceを使用する
ハードドライブまたはネットワークのパフォーマンスまでスピードアップ
圧縮は多くのCPUを使用します
not inplaceを使用すると、ハードドライブのスラッシュが大量に発生します(ファイナルを作成する前に一時ファイルを使用します)
圧縮&インプレースを使用しないことは、インターネット(低速ネットワーク)を介して行うのに適しています
NEW:宛先に注意してください... NTFSの「圧縮」が有効になっている場合...これにより、大きなファイルの速度が大幅に低下します(200 MB以上だと思います)。rsyncがほとんど停止しているように見えます。
-W
オプションを使用します。これにより、デルタ/差分比較が無効になります。ファイルの時間/サイズが異なる場合、rsyncはファイル全体をコピーします。
また、-z
オプションを削除します。これは、ネットワークトラフィックを圧縮する場合にのみ役立ちます。
これでrsync
はcp
と同じくらい高速になるはずです。
まず、この場合のファイル数が主な要因になります。それぞれの平均サイズは3MBです。 OPの場合、速度に影響を与えるioのボトルネックがあると考えられます。 詳細はこちら -これはかなりドライな読みですが、カバー写真は価値があります。
それで、rsyncを使用して空のディレクトリにコピーしますか?これを高速化するいくつかの方法を次に示します。
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
-最初の>は基本的に通常表示されるすべてのものを含むファイルを出力し、2>はエラーメッセージを示します。私のコマンドは:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
すべて問題がなければ、「-dry-run」を削除して手放します。 A、X、およびEは拡張属性と-aでカバーされない権限をカバーします。lはソフトリンク用、Hはハードリンク用、hは人間が読める形式です。
USBドライブ、同じドライブ、またはネットワークを介して既に同期されているディレクトリを更新するには、転送速度を最大化するためにすべて異なるrsyncコマンドが必要になります。
ボーナス- これはrsyncのmanページです 、そしてハードドライブの速度をテストしたい場合は bonnie ++ は適切なオプションであり、ネットワーク速度については iperf を試してください。
※投稿から10年近く経ちますが、検索エンジンは気に入っているので、ずっと見続けています。これは良い質問です。「rsyncを高速化する方法」に対する最高の答えは、「代わりにcpを使用する」ではないと思います。
-z
/--compress
:転送はネットワーク経由ではなくRAM経由であるため、CPUに負荷がかかるだけです。--append-verify
:中断された転送を再開します。これは良い考えのように聞こえますが、危険な失敗事例があります。ソースと同じサイズ(またはそれ以上)の宛先ファイルは無視されます。また、最後にファイル全体のチェックサムを計算するため、--no-whole-file
に比べて速度が大幅に向上することはありませんが、危険な失敗のケースが追加されます。-S
/--sparse
:nullシーケンスをスパースブロックに変換--partial
または-P
_--partial --progress
:部分的に転送されたファイルを保存して、後で再開できるようにします。注:ファイルには一時的な名前が付けられないため、コピー全体が完了するまで、他のファイルが宛先を使用しないことを確認してください。--no-whole-file
再送信が必要なものはすべてデルタ転送を使用します。部分的に転送されたファイルの半分を読み取ることは、多くの場合、再度書き込むよりもはるかに高速です。--inplace
はファイルのコピーを回避します(ただし、転送全体が完了するまで、何も宛先を読み取っていない場合のみ)あなたはあなたのファイルがどのようなサイズ分布を持っているかは言いません。小さなファイルが多数ある場合、ツールが新しいファイルを開き、OSがディレクトリエントリと他のメタデータ(使用している場合はファイルシステムのジャーナルなど)を保持するため、ソースと宛先の両方のドライブでヘッド移動の待ち時間が増えるため、全体的な転送速度が低下します。 ext3/ext4やNTFSのようなメタデータジャーナリングは、デフォルトで転送中に最新になります。単純なバルク転送が行われている場合、ファイルコピープロセスは、より大きなオブジェクトの「ストライドに入る」だけです。
あなたは間違いなく rclone を試してみたいと思います。これはすごく速いです:
$ tree/usr [...] 26105ディレクトリ、293208ファイル
$ Sudo rclone sync/usr/home/fred/temp -P -L-転送64
転送:17.929G/17.929 GBytes、100%、165.692 MBytes/s、ETA 0sエラー:75(再試行すると役立つ場合があります)チェック:691078/691078、100%転送:345539 / 345539、100%経過時間:1m50.8s
これは、LITEONIT LCS-256(256GB)SSDとの間のローカルコピーです。
最初の実行時に--ignore-checksumを追加して、さらに高速にすることができます。