CentOSサーバー間でファイルを転送する必要があります。約10分ごとに5MBのファイルを転送します。暗号化は必要ありません。
ファイルを高速転送するための簡単な方法は何ですか?
FTPよりも簡単なものはありますか?
ありがとう!
rsync
Ftpまたはtftpを使用する前に、rsyncを使用しました。
より多くのオプションと(私の経験では)より信頼できる転送。
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を使用します。
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よりも遅いことがわかりました。
私はscp
またはtar
をssh
よりも正直に使用します。暗号化は速度を低下させますが、セットアップと使用の容易さ、信頼性、そして(主観的には)親しみやすさによって、私は本当にその速度が必要でない限り、喜んで成功を収めます。
また、デフォルトよりも速い暗号を使用するように指示することで、ssh転送を高速化できます。デフォルトは通常3des
そして通常は-c des
、それで明らかに高速になる、そして-c blowfish
も同様に高速に表現されていますが、厳密にはテストしていません。
(SSHv1の時代には、しばしば-c none
、しかし、誰かがそれを悪いjujuだと決めたと思います。)
Scp/sshを実行する必要がある場合、私の実験によると、最近デフォルトで有効になっている最速の暗号はRC4です。 ssh/scpコマンドで '-c arcfour'を使用して暗号を指定します。
最初のコピー:
scp -c arcfour -r foo/ desthost:/destdir
アップデートの場合:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
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.
速度が欲しい場合は、netcatとtarを使用できます。暗号化が問題にならないローカルネットワークでは、ssh、rsync、またはscpよりも高速です。 Googleの「netcat tar」。
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
これは明らかにnetcatが実際にインストールされていることを必要とします。詳細については、Googleの「netcat tar」。
FTPはかなり単純ですが、1つのマシン上にNFS共有を作成し、それを別のマシンにマウントすることで、もっと簡単な方法になる場合があります。次に、ファイルのコピーは、あるディレクトリから別のディレクトリにcpを実行することで構成されます。
私はすでに問題を解決したと思いますが、sshが(標準ポート22ではなく)別のポートで動作する場合は、これを使用できます
rsync -avz --rsh = 'ssh -pXXXXX'/local/dir/[email protected]:/ remote/dir
注:-XXXXXをご使用のポート番号に置き換えます-192.16.1.2を正しいリモートサーバーIPに置き換えます