CPUと帯域幅のコストを可能な限り抑えながら、大きなファイルをrsyncする方法は?


13

リモートでバックアップする予定の500 GBファイルがあります。ファイルは頻繁に変更されます。デスクトップからサーバーに再同期します。どちらもrsyncクライアントまたはサーバーを実行できます。

これに適切なコマンドは何ですか?私が試したものは永遠に取っているか、単に奇妙に振る舞っています。

例と結果:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

動作しているようですが、2回(?!)また、遅いです。

上記のコマンドは、両方のコンピューターでチェックサムを実行しますか、それとも送信コンピューターでのみチェックサムを実行しますか?それ以外の場合は正しいですか?


頻繁に変更される大きなファイルですか?あなたは... rsyncをして非常に、非常に残念な結果を取得するつもりだ
イグナシオバスケス-エイブラムス

他の提案はありますか?私はいくつかのアプリでできるはずです、Dropboxのプロプライエタリなクライアントはそれを非常にうまくやっています。参照してくださいforums.dropbox.com/topic.php?id=17631
ヨハンAllgoth

--inplaceは--partial see:linux.die.net/man/1/rsync
Ray Hulha

回答:


12

rsyncはファイル全体を読み取り/チェックサムする必要があるため、高速になることはありません。500GBの読み取りには、SSDなどに保存していない限り、時間がかかります。

試してくださいrsync -vhz --partial --inplace <file/server stuff>

-cタイムスタンプを使用してファイルが変更されているかどうかを確認するのではなく、ファイル全体をチェックサムしてから転送することを意味します。つまり、ファイル全体を2回読み取ります。タイムスタンプが変更されていない場合(変更する必要がある場合)、touchrsyncを実行する前にファイルを変更できます。

これがスクリプト化されていない場合、実行時に--progressどのように動作するかを確認できるように追加できます。


ええ、私は「大きなファイル==長い処理」を知っています。しかし、私はここで何かが欠けていると感じています。上のコメントを参照してください。Dropboxでできるなら、私たちもできます!=)私は言わなかったが、-cなしでも試みたが、まだ遅い。
ヨハンオールゴス

2
--inplace意味する--partial

2

rsyncではありませんが、何をしようとしているかに応じて、これがうまくいくかもしれません。同様のバックアップタスクを実行していましたが、間違いなく高速でした。

netcatを使用して、あるマシンから別のマシンへのtarパイプを作成します。

ソースマシンで:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

tarballを作成すると、アクセス許可と時間が保持され、ポート45454でnetcatにパイプされます。

バックアップマシン上

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X =ソースマシンのローカルIPアドレス。

私にとって、これはうまくいきました。rsyncでは2〜3 MB /秒ではなく、有線LANでは25〜30 MB /秒で実行されました。欠点は、同期しないことです。ソース上にあるもののコピーを作成するだけです。あなたが説明しているようなバックアップの場合-500GBのファイル1つ-それは非常にうまくいく可能性があります。

アクセス許可の問題を回避するために、rootとしてこれを実行する必要があるか、幸運になるかもしれません。

FWIW、私は最初にここでこれについて学びました:http : //www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/


1
tarrsync転送する小さなファイルがたくさんある場合よりも優れています。使用nc時に高速な接続上のあなたは(私はピア・ツー・ピア接続では必要ありません)SSH暗号化のオーバーヘッドを持っていないためにも、転送速度を向上させる
jornane

0

ネットワークのオーバーヘッドを回避するには、SSHではなくrsyncプロトコルを使用します。デフォルトでは、rsyncはhostname:/ pathなどのURLを指定するときにSSHを使用します。代わりにrsync:// hostname / pathを使用して、より高速なrsyncプロトコルを使用します。この方法では、tar / netcatを使用したトリックは不要です。rsync deltaアルゴリズムははるかに高速である必要があります。

詳細については、https://gergap.wordpress.com/tag/rsync/参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.