Linux サーバー間でファイルを高速転送する最も簡単な方法は何ですか?

Linux サーバー間でファイルを高速転送する最も簡単な方法は何ですか?

ある CentOS サーバーから別の CentOS サーバーにファイルを転送する必要があります。約 10 分ごとに 5 MB のファイルを転送します。暗号化は必要ありません。

ファイルを高速転送する簡単な方法は何ですか?

ftp よりも簡単なものはありますか?

ありがとう!

答え1

rsync

ftp や tftp を使用する前に rsync を使用します。

オプションが増え、(私の経験では)転送の信頼性も高まります。

答え2

ssh 経由の tar は問題ありませんが、netcat 経由の TCP 経由の tar は、オーバーヘッドが最も低くなります。これが 1 回限りの場合は、これを試してみてください。

受信機側:

nc -l -p 8989 | tar x

送信者について:

tar cf - /source-path | nc (receiving host ip address) 8989

これを定期的に行う場合は、おそらく rsync を使用するでしょう。

答え3

2 人が tar over ssh について言及していますが、その方法については述べていません。記録によると、基本的な手順は以下を実行することです。

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

または、受信側から転送を開始する場合:

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

Evan の netcat ソリューションと比べてこの方法の利点は、すべてを 1 台のコンピューターから開始できることです。2 回の netcat 呼び出しを調整する必要がありません。これを自動的に実行する必要がある場合は、パスフレーズなしで接続できるようにする ssh キーを設定し、そのキーをこれらの接続に使用できます。

ssh にはデータ ストリームを圧縮するための -C オプションがありますが、GNU tar の組み込みの圧縮機能を使用することもできます。

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

rsync も別の選択肢ですが、受信側に既に存在するファイルを更新するのが得意です。相手側にまだ存在しないファイルを転送する場合、scp や tar/ssh よりも遅いことがわかりました。

答え4

scp/sshを経由する必要がある場合、私の実験では、現在デフォルトで有効になっている最も高速な暗号はRC4であることがわかりました。暗号は「-c アークフォー' を ssh/scp コマンドに追加します:

最初のコピーの場合:

  • scp -c arcfour -r foo/ desthost:/destdir

更新情報:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

関連情報