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


16

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

ファイルを高速で転送するのは簡単でしたか?

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

ありがとう!


1
:私はnetcatを超えるタールが勝利することを信仰...あわやあわや...持ってserverfault.com/questions/18125/...
エヴァンアンダーソン

暗号化は必要ないが、速度は必要なので、rsyncを好みます。
アレックスL

HTTP転送にはオーバーヘッドがあまりないので、それを使用することもできます。
アレックスL

質問の回答を編集しないで、代わりに回答として投稿してください。ロールバック。
HopelessN00b

「高速」については、unix.stackexchange.com
questions /

回答:


25

rsync

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

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


1
また、rsyncは通常、他のもの(scp、cifs、nfs)よりも高いスループットを得ることがわかりました
オフィディアン

HTTP転送についてはどうですか?
アレックスL

@Ophidian rsyncをデーモンとして使用するということですか?それ以外の場合、両方ともsshを使用し、暗号化があるため、scpよりも高速になります。
バルキ

@balkiはい、rsyncデーモン。特におしゃべりではなく、データをディスクから回線に送り、リクエストを完了するために必要な作業はほとんど行いません(たとえば、テキストファイルの差分を適用します)。
オフィディアン

21

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

受信機で:

nc -l -p 8989 | tar x

送信者:

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

これがあなたが定期的にやろうとしていることなら、おそらくrsyncを使うでしょう。


スイス軍のナイフnetcatの+1
chmeee 09

エヴァンを読んでいないのも同じです。ハハハ!実際には一度限りのものではありません。彼は、約10分ごとに5MBのファイルを転送するつもりだと言いました。おそらくモールス信号を介して送信することは良い代替策でしょうか?;
KPWINC 2009

8

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


1
+1皆さん、sshでtarを実行する方法をすべての人が直感的に知っているわけではないということですか?奇妙な。:)
カオス

tarはそれ自体では信頼性がありません-整合性チェックはありませんが、SSH(TLS)では、データの飛行中の変更をTLSが検出できるため、整合性が得られます。Rsyncはより良い選択であり、Rsyncは暗号化なしでより良い整合性チェックを行うためです。OPは暗号化は必要ないと述べました。
キロ

tarにはどのような整合性チェックが必要ですか?TCPおよびssh層は、信頼性の高いデータ転送を提供します。tar自体にバグがある可能性があると主張している場合は、rsyncを同じように扱う必要があります。実際、プロトコルの問題により、rsync転送がフリーズしました。私はこれまでやってきたtar / untarパイプラインを思い出しません。
ケンスター2009

6

私は正直にscptar以上を使用しますssh。暗号化は速度を低下させますが、セットアップと使用の容易さ、信頼性、および(当然のことながら)親しみやすさから、本当にその速度必要でない限り、喜んで攻撃を受けます。

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

(SSHv1の時代にはよくできましたが-c none、だれかがそれを悪いジュジュだと決めたと思います。)


4

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

初期コピーの場合:

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

アップデート用:

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

3

Rsyncは良い方法です。同じファイルを複数回転送することに気付いた場合、manページのこの引用で示されているように、コピーの速度が上がるからです。

   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.

2

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


要件に応じて。たとえば、インターネットではNFSを使用しません。
カイルホジソン

1
いい視点ね。その場合、中断すると中断したところから再開できるので、rsyncをお勧めします。また、ソースと宛先の間でのみデルタを転送するためです。
スーガン2009

質問は非常に一般的だった、私はsoulutionのように、著者はその必要性最も簡単な解決策を述べ、特にこと、Swooganによって掲示し、暗号化は必要ありません
integratorIT

2

速度が必要な場合は、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」。


1

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

rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / root@192.168.1.2:/ remote / dir

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.