web-dev-qa-db-ja.com

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

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

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

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

ありがとう!

16
Alex L

rsync

Ftpまたはtftpを使用する前に、rsyncを使用しました。

より多くのオプションと(私の経験では)より信頼できる転送。

25
KPWINC

tar over sshは問題ありませんが、tar over TCP via netcatを使用すると、オーバーヘッドを最小限に抑えることができます!これが1回限りの場合は、これを試してみてください。

受信機で:

nc -l -p 8989 | tar x

送信者:

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

これが定期的に行う予定の場合は、おそらくrsyncを使用します。

21
Evan Anderson

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

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よりも遅いことがわかりました。

8
Kenster

私はscpまたはtarsshよりも正直に使用します。暗号化は速度を低下させますが、セットアップと使用の容易さ、信頼性、そして(主観的には)親しみやすさによって、私は本当にその速度が必要でない限り、喜んで成功を収めます。

また、デフォルトよりも速い暗号を使用するように指示することで、ssh転送を高速化できます。デフォルトは通常3desそして通常は-c des、それで明らかに高速になる、そして-c blowfishも同様に高速に表現されていますが、厳密にはテストしていません。

(SSHv1の時代には、しばしば-c none、しかし、誰かがそれを悪いjujuだと決めたと思います。)

6
chaos

Scp/sshを実行する必要がある場合、私の実験によると、最近デフォルトで有効になっている最速の暗号はRC4です。 ssh/scpコマンドで '-c arcfour'を使用して暗号を指定します。

最初のコピー:

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

アップデートの場合:

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

Manページのこの引用で示されているように、同じファイルを2回以上転送するとコピーが高速になるため、Rsyncは良い方法です。

   rsync is a program that behaves in much the same way that rcp does, but
   has many more options and uses  the  rsync  remote-update  protocol  to
   greatly  speed  up  file  transfers  when the destination file is being
   updated.
   The rsync remote-update protocol allows rsync to transfer just the dif-
   ferences between two sets of files across the network connection, using
   an efficient  checksum-search  algorithm  described  in  the  technical
   report that accompanies this package.
3
thepocketwade

速度が欲しい場合は、netcatとtarを使用できます。暗号化が問題にならないローカルネットワークでは、ssh、rsync、またはscpよりも高速です。 Googleの「netcat tar」。

DestinationServer

nc -l -p 7878 | tar -C /target/dir -xzf -

SourceServer

tar -cz /source/dir | nc DestinationServer 7878

これは明らかにnetcatが実際にインストールされていることを必要とします。詳細については、Googleの「netcat tar」。

2
robertmoggach

FTPはかなり単純ですが、1つのマシン上にNFS共有を作成し、それを別のマシンにマウントすることで、もっと簡単な方法になる場合があります。次に、ファイルのコピーは、あるディレクトリから別のディレクトリにcpを実行することで構成されます。

2
Swoogan

私はすでに問題を解決したと思いますが、sshが(標準ポート22ではなく)別のポートで動作する場合は、これを使用できます

rsync -avz --rsh = 'ssh -pXXXXX'/local/dir/[email protected]:/ remote/dir

注:-XXXXXをご使用のポート番号に置き換えます-192.16.1.2を正しいリモートサーバーIPに置き換えます

1
mangia