rsyncが純粋なcpまたはscpと比較しても遅いのはなぜですか?


15

マウントされた共有を介してLinuxからWindows 7にファイルを転送しています(共有はLinux 上の Windows からマウントさます)。LAN内の古いマシンから新しいマシンに大量のデータ(TB近く)をコピーしています。残念ながら、100MBitしかありません。当然のことながら、rsyncを盲目的に使用しましたが、1日後にはなぜそんなに遅く感じるのかと疑問に思いました。進捗メーターを有効にすると、約2MB / sの転送速度が示されました。

そこで、妥当な大きなファイル(800MB)を取り、転送タイミングを追跡しました(1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1)各実行の間にファイルを削除しました
2)ローカルホスト経由でscpを使用して同じLinuxマシンに直接共有します。完全に役に立たないが、進行状況メーターを提供

テストは次のように簡単でした

(cp|scp|rsync) <source> <destination>

scpのホスト/ポート以外の特別な引数はありません。-Wrsync の切り替えを試みましたが、10分後にキャンセルされました。rsyncはLennyで実行されている3.0.3です。いつでもコピープロセスを中断して再開できるようになると、rsyncに導かれますが、今はこの要件を真剣に再検討する必要があると思います。

このような大きな違いはどのように可能ですか?

更新/解決済み:

rschulerのおかげで問題を解決できました。効率上の理由から、smbマウントの代わりにrsyncデーモンを使用してください。上記のDeltaCopyは機能しますが、いくつかの点に注意する必要があります

  • それは素晴らしいGUIラッパーですが、何か問題が発生した場合、それを修正する方法を知っておくと良いでしょう。rsyncサービスを実行するために最初に間違ったユーザー資格情報を入力したようですが、GUIでは新しい資格情報を設定できませんでした。サービスとして実行されており、そこで適切な資格情報を設定できることがわかりました
  • 接続を許可するためにポートをファイアウォールに手動で追加する必要がありました
  • 個人的な好み:共有がパスワードで保護されていることを確認します。パスワードで保護されていない場合は、Windowsでサービスが自動的に開始されないようにします。念のため
  • ラップされたrsyncバイナリはネイティブのWindowsポートではありませんが、cygwin上に構築されます。ただし、含まれているcygwin DLLはUTF8およびマングルされた非ASCII文字を適切に処理しません。http://www.okisoft.co.jp/esc/utf8-cygwin/から固定DLLを取得します

その後、転送レートは2MB / sから〜8MB / sに跳ね上がりました。本当に素敵!


テストを実行するたびに宛先ファイルを削除しましたか?宛先ファイルがすでに存在し、メタデータが正しくない場合、ソースと宛先の両方のチェックサムが必要になります。
ゾレダチェ

@Zoredache:実行の間にファイルを削除しました。また、-Wスイッチはそれを無視することになっています
マーク

回答:


18

(共有はLinux上のWindowsからマウントされます)

それがあなたの問題です。rsyncは、宛先に対してローリングチェックサムを実行しています。Windowsが共有します。ネットワーク経由ですべてのデータをプルして、チェックサムを計算しています。(おそらく複数回)。

必要なのは、両方のマシンでrsyncを実行することです。そうすれば、違い(およびチェックサム)のみがネットワークケーブルを介して転送されます。 DeltaCopyはウィンドウ化されたrsyncです。十分な資料が用意されています。

rsyncを誤用していると思われる理由については、この質問に対する賛成の回答をご覧ください。


ビンゴ、あなたの答えは要点以上にならないでしょう。多くのおかげで、私は私のレッスンを学びました。
マーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.