2台のサーバーでSSH経由でログインし、一部のファイルを一方から他方にコピーする場合(たとえば、古いサーバーから新しいサーバーに構成する場合)、これを行う最も簡単な方法は何ですか?
2台のサーバーでSSH経由でログインし、一部のファイルを一方から他方にコピーする場合(たとえば、古いサーバーから新しいサーバーに構成する場合)、これを行う最も簡単な方法は何ですか?
回答:
server1で:
scp <files> server2:/dest/dir/
または、rsyncがインストールされている場合:
rsync -azvu basedir/ server2:destdir/
そうでない場合は、tarを介してパイプします。
tar cf - -C srcdir | ssh server2 tar xf - -C dstdir
最後の2つはディレクトリツリー全体をコピーします。ディレクトリ内の最初の1つ以上のファイル。
つまり、最初のシェルツールを使用して、2番目のシェルツールに直接コピーするだけです。
合計サイズが大きすぎない場合は、この小さなトリックを使用できます。
tar -cz <filestocopy> | base64
base64 -d | tar -xzv
これはどのように作動しますか?
2つのオープンsshセッションで、コピーする最も速い方法は次のとおりです。
netcat(nc)を使用する
Sender/Source machine:
tar -czf - /source/dir | nc -l 2342
Receiver/Destination machine:
nc -w 10 sourcemachine 2342 | tar -C /target/dir -xz -
安全性の低い暗号化でscpを使用します。通常、デフォルトはフグですが、arcfourの方がはるかに高速です。
scp -c arcfour mogga@flinflon:/home/users/mogga /dev/null
私は通常、2番目のオプションを使用します(より頻繁に覚えられるからです)。
-p
オプション(ソースオプション)は宛先コマンドに存在すべきではありません。
-p source_port Specifies the source port nc should use, subject to privilege restrictions and availability. It is an error to use this option in conjunction with the -l option.
sudo
(まあ、パイプタールスルーSSHが可能ですか?)。しかし、より大きなデータを転送する最も実用的な方法です。