0

Linuxサーバ間でファイルのコピーをscpコマンドで行う方法

❏ scpコマンド

あるLinuxサーバから別のLinuxサーバにファイルをコピー

データ転送のプロトコルに「SSH(Secure Shell)」を利用し、ファイルコピーを行います。
機能としては、リモートシステム間でファイルコピーするためのコマンド「rcp」と同等ですが、
SSHによるデータ転送の通信暗号化を施すことで、ユーザ認証とデータ転送の両方で安全性を確保します

scp [オプション] コピー元 コピー先

最初の引数にコピー元(オリジナル)ファイルを、2番目の引数にコピー先(複製)ファイルを指定して、コマンドを実行します。
ただし、コピー元/コピー先にリモートホスト(SSHサーバー)を指定できるところが、cpコマンドと決定的に異なる点です。

同じくSSHを用いたファイルコピーを行うコマンドには「sftp」がありますが、
scpはrcpおよびcpコマンドと同等の機能を持つことから、バッチ処理に適しています。

sftpと比較すると転送速度で有利とされますが、
一方では中断した転送を再開できないというデメリットがありますので留意しておきましょう。

capture-2016-09-10-9-16-45

# pwd
/home/test
# scp -p hachim@192.168.2.6:/home/test2/index.php ./
hachim@192.168.2.245's password:
index.php                                                100%  602     0.6KB/s   00:00

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「hachim」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test2/」直下に保存されている「index.php」ファイルをコピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

あるLinuxサーバから別のLinuxサーバに正規表現を用いて複数ファイルをコピーする方法

# scp -p hachim@192.168.2.6:/home/test2/*.html ./
hachim@192.168.2.6's password:
index.html                                                100%   16KB  15.9KB/s   00:00
index2.html                                              100%   16KB  15.9KB/s   00:00
index3.html                                              100%  319     0.3KB/s   00:00
test01.html                                              100%  304     0.3KB/s   00:00
test02.html                                              100% 8950     8.7KB/s   00:00
test03.html                                              100%  323     0.3KB/s   00:00

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「hachim」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test2/」直下に保存されている「.html」拡張子のファイル全てを「*(アスタリスク)」を用いた正規表現により取得し、コピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

※「*(アスタリスク)」は、0文字以上の文字列を表す。

あるLinuxサーバから別のLinuxサーバに指定したディレクトリ全体(丸ごと)をコピーする方法

# scp -pr hachim@192.168.2.6:/home/test3 ./

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「hachim」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test3/」配下にある全ディレクトリおよびファイルをコピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

※指定したディレクトリ全体(丸ごと)を再帰的にコピーする場合、「-r」オプションをつける。 

《参考》

「man scp」を実行して確認できるヘルプ。

-p     Preserves modification times, access times, and modes from the original file.

-r      Recursively copy entire directories.

このヘルプより、

「-p」オプション
オリジナルファイルの更新日時、アクセスタイム、モードを維持(保持する:preserve)する

「-r」オプション
ディレクトリ全体を丸ごと(再帰的に : recursive)コピーする

というオプションであることが分かる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です