現在、約200,000個のファイルを新しいサーバーに転送しています。私はこれまでにこれほど大規模なことをしたことがなく、どうすればよいかについてアドバイスを求めていました。私は2つのCentos 6ディストリビューション間でそれらを移動しています。それらは国内の異なる場所にあります。元のサーバーにすべてのディレクトリとファイルを1つの大きなtarballに圧縮するのに十分なHDDスペースがないので、私の質問は、これらのファイルをすべて転送する方法を教えてください。 rsync? rsyncを使用するいくつかの特別な方法?それを行う方法についての入力/提案は素晴らしいでしょう。
ありがとう
編集:不思議に思う人のために、私はこのような大きなscreen
コマンドを実行するときにrsync
を使用することを強くお勧めします。特に、おかしなことが起こり、rsync
コマンドを実行しているサーバーAへの接続が失われた場合。次に、画面を切り離して、後で再開します。
Simonの肉付け answer を具体化するために、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 [email protected]:/path/to/remote/bar
これにより、ディレクトリpath/to/local/foo
がリモートサーバーの/path/to/remote/bar
にコピーされます。 bar/foo
という名前の新しいサブディレクトリが作成されます。ターゲットにその名前のディレクトリを作成せずに、ディレクトリのcontentsのみをコピーする場合は、末尾にスラッシュを追加します。
rsync -hrtplu path/to/local/foo/ [email protected]:/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
これは、コピーする必要がある速度と使用可能な帯域幅に依存します。
ネットワーク接続が不十分な場合は、テープでいっぱいのトラックの帯域幅を検討してください。 (読む:2.5インチHDDを郵送するか、自分でドライブしてください。300ギガビットドライブは簡単に見つけられるはずです)。
時間がそれほど重要でない場合、または十分な帯域幅がある場合は、rsyncが最適です。エラーがある場合は、以前のファイルを再コピーせずに続行できます。
[編集]コピー中にデータが使用された場合、rsyncを複数回実行できることを忘れてしまいました。
例:
1)使用中のデータ。 Rsync->すべてのデータがコピーされます。これには時間がかかる場合があります。
2)再度rsyncを実行します。変更されたファイルのみがコピーされます。これは速いはずです。
変更がなくなるまでこれを数回行うことができます。または、コピー中にデータを読み取り専用にすることで、スマートで安全な方法で行うことができます。 (たとえば、それが読み取り専用に共有する使用済みの共有セット上にある場合。または、データをrsyncし、夜間に共有を読み取り専用に設定し、2回目に実行する場合)。
私はrsyncに行きます!私は自分のサーバーをオフサイトサーバーにバックアップするために使用していますが、問題なく動作します。通常、コピーするMBは数MBですが、場合によっては20〜30 GBになり、問題なく動作します。
ギガビット接続を使用したNFSを介したrsyncには、約10時間かかります。 HDDにデータをコピーし、サーバー間で移動することをお勧めします。実際のディスクの1対1のコピーを作成する必要がある場合は、ddなどを使用して、ディスクのrawイメージを作成します。 ssh(scp)を使用すると、大きなオーバーヘッドが発生します。ギガビット接続で実験的にテストされています。 rsyncは、HAまたはバックアップモードで使用される2つのサーバー間で増分同期を行うのに適しています。私は推測する。
初めてNFSとtar/untarを使用します(NFSはこの場合最も高速なプロトコルです。tarはCPU使用率を増やすことでネットワーク帯域幅を節約します)
tar cf - * | ( cd /target; tar xfp -)
次回はrsyncを使用します