今回はLinuxコマンドの「scp」コマンドについて説明をします。
マシン間でファイルのコピーをするコマンド
「scp」コマンドはリモートマシンとローカルマシン、リモートマシン同士でファイルのコピーを行うコマンドです。
scpコマンドを使うとリモート・ホストとの間でファイル転送を行うことができます。
リモートホストとのファイル転送はrcp(リモートコピー)コマンドもありますが、scpではSSHを使いますので、scpはrcpのSSH版です。
従って、scpコマンドを実行するには、SSH接続ができなければなりません。
「SSH copy」なので「scp」ですね。
scpコマンドの使い方は以下のとおりです。
scp [オプション] コピー元 コピー先
例) scp user@host:/home/user/file /tmp
scpコマンドの使い方は、ローカルでファイルのコピーを行うcpコマンドとほぼ同じです。
コピー元、コピー先のどちらにもリモートホスト側のパスを指定できますが、その場合は次の形式で指定します。
ユーザ名@ホスト名:ファイルのパス
ファイルのパスは絶対パス、もしくは「@」の前に指定したユーザのホームディレクトリからの相対パスで指定します。
たとえば、ローカルホストの「hoo.jpg」をリモートホスト「bar」のユーザ「u2」の「~/Pictures」ディレクトリの下に同じ名前でコピーするには次のようになります。
コマンド:scp hoo.jpg u2@bar:Pictures
u2bar’s password:xxxxxxxxxx ← パスワード入力を求められる
スポンサーリンク
「-r」オプションでディレクトリをまるごとコピーする
scpコマンドのオプションは以下のとおりです。
オプション | 内容 |
---|---|
-r | 再帰的にコピーする。ディレクトリごとコピーするときに使用する |
-p ※小文字 | コピー元のタイムスタンプやパーミッションを保持する。小文字であることに注意する |
-l 上限値 | 使用帯域をkbit/秒単位で指定する |
-P ポート番号 ※大文字 | ポート番号を指定する。大文字であることに注意する |
-C ※大文字 | すべての通信を圧縮する。大文字であることに注意する |
-B | パスワード入力を求めない、バッチモードで動作する |
-q | エラーメッセージや診断メッセージを表示しない(quit modeで動作する) |
-v | デバッグメッセージを表示する(verbose mode) |
-i 秘密鍵 | 秘密鍵ファイルを指定する。初期設定はSSHバージョン1は~/.ssh/identity、バージョン2は~/.ssh/id_rsaと~/.ssh/id_dsa |
-1 | SSHバージョン1を使用する |
-2 | SSHバージョン2を使用する |
-4 | IPv4を使用する |
-6 | IPv6を使用する |
なお、cpコマンドと同じく「-r」オプションを指定すると、ディレクトリをまるごとコピーできます。
また、「-p」オプションを指定すると、タイムスタンプやパーミッションが保持されます。
次に、public_htmlディレクトリをまるごとファイルの属性を保持したまま、リモートホスト「hula」のユーザ「o2」のホームディレクトリにコピーする例を以下に示します。
コマンド: scp -rp public_html o2@hula
o2@hula’s password:xxxxxxxxxxxxxxxx
scpコマンドはサーバ間で作業をするときに使います。
特に本番環境にWinSCPなどのツールを導入できないときには必須となるコマンドですので、
そのような作業をする可能性のある方は覚えておいてください。
このブログがみなさんのお役に立てれば幸いです。
スポンサーリンク