通常、私はあるマシンから別のマシンにファイルを安全にコピーすることができます
> scp [email protected] ssh [email protected]:/home/user/my_files/* .
大規模なデータセットの場合、非常に遅くなります。
私が使用しているマシンには、wget でアクセスできる非常に高速なリンクがあると言われました。代わりに wget を使用して同じファイル転送を実行するにはどうすればよいでしょうか?
答え1
netcat
これら 2 台のマシン間に高速で安全かつ安定したネットワーク リンクがある場合は、次のようにとの組み合わせを使用できますtar
。
宛先マシンで、次のコマンドを実行します。
nc -l 10000 | tar -C /destination/directory -xzf -
ソースマシンで以下を実行します。
tar -cz /source/directory | nc dst-machine-ip-address 10000
暗号化は使用されないことに注意してください。そのため、トラフィックが盗聴される可能性があり、何らかの理由で接続が切断された場合は、最初からやり直す必要があります。
個人的には、 をフォローしたいと思いますrsync
。
答え2
のパフォーマンスSCP-10 ...次の 2 つの要因が原因である可能性があります。
- 暗号化のコストは低速プロセッサには高すぎるかもしれないが、
- 1 つのファイルを要求するために必要なラウンドトリップの数。
多数の小さなファイルの場合は2番目です。私の最初のアイデアは、sftpリモート ホストでは別のプログラムを使用するためです。ただし、テストの結果、同様のパフォーマンスが得られました。
有効な解決策は、クライアントとサーバーの両方にインストールされ、1つのデータストリームのみを返すプログラムを使用することです(数千のsshチャンネル):
あなたが持っている場合rsyncリモート サーバー (およびクライアントにインストールする) で以下を使用します。
rsync -av -e "ssh [email protected]" [email protected]:/home/user/my_files .
それ以外の場合はタール:
ssh -o [email protected] -e none [email protected] \ tar -c /home/user/my_files | tar -x