web-dev-qa-db-ja.com

多くのファイルを転送する最も速くて最も信頼できる方法は何ですか?

合計100 GBのファイルを合計90 GB転送しようとしています。現在、私はrsyncデーモンを使用していますが、3.4mb/sと遅いため、これを何度も実行する必要があります。インターネット経由で100メガビットの接続を最大限に活用し、非常に信頼性の高いオプションはありますか。

10
incognito2

Sneakernet を検討しましたか?大規模なデータセットを使用すると、インターネット経由で転送するよりも、夜間に発送する方が多くの場合、高速で安価になります。

11
ceejayoz

どうやって?またはTL; DR

私が見つけた最速の方法は、tarmbuffersshの組み合わせです。

例えば。:

_tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
_

これを使用して、1 Gbリンクで950 Mb/s以上の持続的なローカルネットワーク転送を実現しました。各tarコマンドのパスを、転送対象に適したものに置き換えます。

どうして? mbuffer!

大きなファイルをネットワーク経由で転送する際の最大のボトルネックは、断然、ディスクI/Oです。その答えはmbufferまたはbufferです。これらはほとんど同じですが、mbufferにはいくつかの利点があります。デフォルトのバッファサイズは、mbufferの場合は2MB、bufferの場合は1MBです。バッファが大きいほど、空になることはありません。ターゲットと宛先の両方のファイルシステムでネイティブブロックサイズの最小公倍数であるブロックサイズを選択すると、最高のパフォーマンスが得られます。

バッファリングは、allの違いを生み出すものです!もしあれば、それを使用してください!お持ちでない場合は、入手してください! _(m}?buffer_に加えて何でも使用することは、それ自体で何よりも優れています。ほぼ文字通り、遅いネットワークファイル転送の万能薬です。

複数のファイルを転送する場合は、tarを使用して、それらを1つのデータストリームにまとめます。単一のファイルの場合、catまたはI/Oリダイレクトを使用できます。 tarcatのオーバーヘッドは統計的に重要ではないので、すでにtarballでない限り、常にtar(または、可能な場合は_zfs -send_)を使用します。これらはどちらもメタデータを提供することは保証されていません(特にcatは提供しません)。メタデータが必要な場合は、演習として残しておきます。

最後に、トランスポートメカニズムにsshを使用すると、安全でオーバーヘッドもほとんど発生しません。この場合も、sshncのオーバーヘッドは統計的に重要ではありません。

10
bahamat

「rsync」について言及しているので、Linuxを使用していると思います。

なぜtarまたはtar.gzファイルを作成しないのですか? 1つの大きなファイルのネットワーク転送時間は、多くの小さなファイルよりも高速です。必要に応じて圧縮することもできます...

圧縮なしのタール:

ソースサーバー:

tar -cf file.tar /path/to/files/

次に、受信側で:

cd /path/to/files/
tar -xf /path/to/file.tar

圧縮付きのタール:

ソースサーバー:

tar -czf file.tar.gz /path/to/files/

次に、受信側で:

cd /path/to/files/
tar -xzf /path/to/file.tar.gz

rsyncを使用して(tar | tar.gz)ファイルを実際に転送します。

8
Soviero

tarsshのトリックを試すことができます こちら

tar cvzf - /wwwdata | ssh [email protected] "dd of=/backup/wwwdata.tar.gz"

これは次のように 書き換え可能にする必要があります

tar cvzf - /wwwdata | ssh [email protected] "tar xvf -"

ただし、その過程でrsync--partial機能が失われます。ファイルが頻繁に変更されない場合、遅いrsyncを使用することは、大いに役立つため、かなり価値があります将来はより速く。

5
warren

Rsyncのさまざまな圧縮オプションを使用できます。

-z, --compress              compress file data during the transfer
     --compress-level=NUM    explicitly set compression level
     --skip-compress=LIST    skip compressing files with suffix in LIST

バイナリファイルの圧縮率は非常に低いため、-skip-compressを使用してこれらのファイルをスキップできます。 iso、すでにアーカイブおよび圧縮されたtarballなど。

2
Sachin Divekar