1つのサーバーから別のサーバーに約300 GBのファイルを転送する


20

現在、約200,000個のファイルを新しいサーバーに転送しています。私はこれまで大規模なことを何もしたことがなかったので、これをどうすればよいかについてアドバイスを受けたいと思いました。私は2つのCentos 6ディストリビューション間でそれらを移動していますが、それらは国内の異なる場所にあります。元のサーバーにすべてのディレクトリとファイルを1つの巨大なtarballにtarするのに十分なHDDスペースがないので、私の質問はこれらのファイルをすべて転送する方法です。rsync?rsyncを使用する特別な方法はありますか?それを行う方法に関する入力/提案は驚くべきものです。

ありがとう

編集:不思議な人のために、私はこのようなscreen大きなrsyncコマンドを実行するときにAを使用することを強くお勧めします。特に、何かおかしいことが起こり、rsyncコマンドを実行しているサーバーAへの接続が失われた場合。次に、画面を切り離して、後で再開します。


4
rsyncまだ試しましたか?たぶん小さなファイルのセットかそこらに?そのための理想的なツールでなければなりません。
slhck

これは、ほぼ確実にこの仕事に最適なツールではありませんが、あなたはあなたではなく、ファイルを移動する前に、ファイルを圧縮することよりも、SSH接続を介してタールをストリーミングすることができるという事実に興味がある可能性がありますtar cz | ssh user@example.com tar xz
Aesin

2
トピックから外れている可能性がありますが(特に初期ロードの場合、rsyncその後の更新に使用する場合):「テープでいっぱいのステーションワゴンの帯域幅を過小評価しないでください」(つまり、2番目のhd / USB3ディスク)、その上にバックアップし、それははるかに速く何よりも、および他の用途のために帯域幅を節約することができ、遠隔地にフェデックス経由して1つを送信しますか?。
オリヴィエ・デュラック

1つのプロバイダーにBWの制限はありませんが、もう1つのプロバイダーには今月は到達しません。だから私はそれを無駄にする問題は本当にありません:P
MasterGberry

1
@OlivierDulac what-if.xkcd.com/31
ボブ

回答:


24

サイモンの答えを具体化するにrsyncは、仕事に最適なツールです。

   Rsync  is  a  fast  and extraordinarily versatile file copying
   tool.  It can copy locally,  to/from  another  host  over  any
   remote  shell,  or to/from a remote rsync daemon.  It offers a
   large number of options  that  control  every  aspect  of  its
   behavior  and permit very flexible specification of the set of
   files to be copied.  It is famous for its delta-transfer algo‐
   rithm,  which reduces the amount of data sent over the network
   by sending only the differences between the source  files  and
   the  existing  files in the destination.  Rsync is widely used
   for backups and mirroring and as an improved copy command  for
   everyday use.

リモートマシンへのsshアクセスがあると仮定すると、次のようなことをしたいでしょう。

rsync -hrtplu path/to/local/foo user@remote.server.com:/path/to/remote/bar

これにより、ディレクトリpath/to/local/foo/path/to/remote/barリモートサーバーにコピーされます。という名前の新しいサブディレクトリbar/fooが作成されます。ターゲットにその名前のディレクトリを作成せずにディレクトリの内容のみをコピーする場合は、末尾にスラッシュを追加します。

rsync -hrtplu path/to/local/foo/ user@remote.server.com:/path/to/remote/bar

これにより、コンテンツがfoo/リモートディレクトリにコピーされbar/ます。

関連するいくつかのオプション:

 -h,                         output numbers in a human-readable format 
 -r                          recurse into directories
 -t, --times                 preserve modification times
 -p, --perms                 preserve permissions
 -l, --links                 copy symlinks as symlinks
 -u, --update                skip files that are newer on the receiver
 --delete                    delete extraneous files from dest dirs
 -z, --compress              compress file data during the transfer
 -C, --cvs-exclude           auto-ignore files in the same way CVS does
 --progress                  show progress during transfer
 --stats                     give some file-transfer stats

rsync -hrtplu --progress進行状況を確認したい場合はどうすればよいですか?
MasterGberry

@MasterGberryうん、まさに。実行するバックアップスクリプトがありますrsync --progress --stats -hrtl --update source destination
テルドン

実行に問題があるようです。 rsync -hrtplu --progress --rsh='ssh -p2202'私が使用しているものであり、接続できません。255エラーが発生し続けます。しかし、私はそれに夢中です。だから、ファイアウォールではないことを知っています... cmd経由でもパスワードを提供する必要がありますか?それとも、それを求めて私に聞いてみませんか?
MasterGberry

Derp、nvm。ファイアウォールのアウトバウンドトラフィックを忘れました。ありがとう
-MasterGberry

重要な注意:rsyncでは、 "-delete"を使用する場合は特に注意してください。他の(/ tmp / ...)フォルダーをテストし、末尾の "/"を追加するかしないかを変更に注意してくださいコピー元ディレクトリまたはコピー先ディレクトリの最後。
オリビエデュラック

14

コピーの速度と、使用可能な帯域幅に依存します。

不十分なネットワーク接続については、テープでいっぱいのトラックの帯域幅を考慮してください。(読んでください:2.5インチのHDDを郵送するか、自分でそこに置いてください。300ギガビットドライブは簡単に見つけることができます)。

時間がそれほど重要でない場合、または十分な帯域幅がある場合は、rsyncが最適です。エラーが発生した場合、以前のファイルを再コピーせずに続行できます。

[編集]コピー中にデータが使用された場合、rsyncを数回実行できることを追加するのを忘れました。

例:
1)使用中のデータ。Rsync->すべてのデータがコピーされます。これには時間がかかる場合があります。
2)rsyncを再度実行すると、変更されたファイルのみがコピーされます。これは速いはずです。

変更がなくなるまでこれを数回行うか、コピー中にデータを読み取り専用にすることでスマート/安全な方法で行うことができます。(たとえば、共有が読み取り専用になっている使用済み共有セットにある場合。または、データをrsyncしてから、夜間に共有を読み取り専用に設定し、2回目に実行する場合)。


1
サーバーは、帯域幅が妥当な時間内に300Gを処理できない場所にあるべきではありません...-
ダン

1
それは「合理的な」ものに依存します。最も弱いリンクが100メガビットであるとしましょう(これがオフィスからのアップロード制限であるか、他でのダウンロード制限であるかは気にしません)。それはおよそ10MB /秒を可能にします。(10のdivは妥当と思われます。すべてが完全にうまくいけば、もう少し多くを得ることができます。例えば、他の誰もこの行を使用していません)。10MB /秒~~ 600MB /分~~ 36000MB /時間~~ 36 GB /時間~~ 300GBは8時間20分です。それは一晩で可能です。また、それは多くの仮定をします。たとえば、アップロードが2メガビットのみの場合(これらの速度のオフィスがある場合)、50倍の時間がかかります(415時間、17.3日)。
ヘネス

うわぁ!はい、8-10は合理的ですが、私は確かに多くの仮定をしていました。
ダン

2
@Danサーバーが稼働しており、要求を処理することが要件である場合、アップストリーム帯域幅を飽和させることはおそらく悪い考えです。このため、転送速度を人為的に調整する必要があります。
ボブ

6

rsyncに行きます!サーバーをオフサイトサーバーにバックアップするために使用していますが、正常に機能します。通常、コピーする数MBがありますが、数日で20〜30 GBになり、問題なく動作しました。


0

ギガビット接続を使用したNFS経由のrsyncには、約10時間かかりました。HDD上のデータをコピーし、サーバー間で移動することをお勧めします。実際にディスクの1対1のコピーを作成する必要がある場合は、ddまたはそのようなものを使用して、ディスクの生のイメージを作成します。ssh(scp)を使用すると、大きなオーバーヘッドが発生します。ギガビット接続で実験的にテストされています。rsyncは、HAまたはバックアップモードで使用される2つのサーバー間で増分同期を行うのに適しています。私は推測する。


この回答の言語とスタイルを改善する必要があります。
FSMaxB

Rsyncは、コピー中にファイルを変更できる場合に特に便利です。数回実行するだけです。初めてすべてのデータがコピーされます。2回目は、最初の(長い)コピー中に変更されたもののみ。3回目は夜間または共有が読み取り専用で行われます。
ヘネス

will took nearly about 10h. It will be better to copy data on HDD and move them between server.全国にあるため、時間がかかります。
ロブ

@FSMaxB:後でこれを行います、thx。
パウエル

@Rob:私はこれを読みました;)サーバーが2つの異なる場所にあること。だから、あなたはあなたのために何が良くなるかを計算する必要があります。全国を旅する(燃料費などを確認する)か、ネットワーク接続を使用します。もっと有益になるもの。
パウエル

0

初めてNFSとtar / untarを使用します(この場合、NFSが最も高速なプロトコルです。tarはより多くのCPU使用率によりネットワーク帯域幅を節約します)

tar cf - * | ( cd /target; tar xfp -)

次回はrsyncを使用します


十分なCPUパワーがある場合は、ループにgzipを追加することでこれを改善できます。また、NFSなしでnetcatを使用できます。(あるいは両方:tar -cf - * | gzip | nc -p 4567nc -l 4567 | gunzip | tar xf -
ヘネス

Hennesに感謝、それは私のアイデアでしたが、パイプのgzipを忘れてしまった
2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.