エンジニア歴20年のSEが作るITエンジニア向けブログ。プログラム、コマンドなどなどIT技術情報について書いていきます!

  1. Linux
  2. 1706 view

Linuxコマンド【scp】マシン間でファイルのコピーをする

今回は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
-1SSHバージョン1を使用する
-2SSHバージョン2を使用する
-4IPv4を使用する
-6IPv6を使用する

なお、cpコマンドと同じく「-r」オプションを指定すると、ディレクトリをまるごとコピーできます。
また、「-p」オプションを指定すると、タイムスタンプやパーミッションが保持されます。

次に、public_htmlディレクトリをまるごとファイルの属性を保持したまま、リモートホスト「hula」のユーザ「o2」のホームディレクトリにコピーする例を以下に示します。

コマンド: scp -rp public_html o2@hula
o2@hula’s password:xxxxxxxxxxxxxxxx

scpコマンドはサーバ間で作業をするときに使います。
特に本番環境にWinSCPなどのツールを導入できないときには必須となるコマンドですので、
そのような作業をする可能性のある方は覚えておいてください。

このブログがみなさんのお役に立てれば幸いです。



スポンサーリンク

 

Linuxの最近記事

  1. Linuxコマンド【wc】テキストファイルの行数、単語数、バイト数を数える

  2. Linuxコマンド【rm】ファイルを削除する

  3. Linuxコマンド【rmdir】空のディレクトリを削除する

  4. Linuxコマンド【tail】ファイルの末尾を表示する

  5. Linuxコマンド【head】ファイルの先頭を表示する

関連記事