本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「scp」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、リモートマシンとの間でファイルをコピーする「scp」コマンドです。
「scp」はリモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用するコマンドです。同じようなコマンドに「rcp(リモートコピー)」がありますが、scpコマンドは通信にSSHを使用する点が異なります。
なお、scpコマンドの実行には、「sshd(SSH daemon:SSHのサーバプログラム)」が動作しているなど、SSH接続が可能である必要があります。
scpコマンドの主なオプションは次の通りです。
オプション | 意味 |
---|---|
-B | バッチモードで動作する(パスワード入力などを求めない) |
-l リミット | 使用帯域をKbit/秒単位で指定する |
-p | コピー元のタイムスタンプやパーミッションを保持する |
-P ポート番号 | 接続に使用するポート番号を指定する |
-i IDファイル | 接続に使用する公開鍵ファイルを指定する |
-C | 全ての通信を圧縮する |
-c 暗号化方法 | 通信を暗号化する方法を指定する(「3des」「blowfish」「des」が指定可能) |
-1 | SSHv1(SSHプロトコルバージョン1)だけを使用する |
-2 | SSHv2(SSHプロトコルバージョン2)だけを使用する |
-4 | IPv4だけを使用する |
-6 | IPv6だけを使用する |
-F 設定ファイル | SSHの設定ファイルを指定する |
-o 設定パラメータ | SSHの設定パラメータを指定する(設定ファイルに書かれた内容より優先される) |
-q | エラーメッセージや診断メッセージを表示しない(quiet mode) |
-v | デバッグメッセージを表示する(verbose mode) |
【※】sshコマンドの「-p」(ポート番号)は「-P」である点に注意
「scp 接続先:パス名」で、接続先にあるファイルをローカルにコピーします。cpコマンドと同様に「scp 接続先:パス名 保存先」で、保存場所や保存するファイル名を指定することも可能です。
接続先はホスト名やIPアドレスで指定します。例えば、「192.168.2.4」にある「/etc/bash.bashrc」をカレントディレクトリにコピーする場合は、「scp 192.168.2.4:/etc/bash.bashrc」、保存場所を「~/Downloads/」にするならば「scp 192.168.2.4:/etc/bash.bashrc ~/Downloads/」のように指定します。
接続先には現在のユーザー名でログインすることになります。別の名前でログインしたい場合は、sshコマンド(第80回)同様、「scp ログイン名@接続先:パス名」のように指定します。
接続先にSSH接続を行ったことがない場合、「Are you sure you want to continue connecting(yes/no)?」というメッセージが表示されます。接続相手に間違いがなければ「yes」と入力して、[Enter]キーを押します。
続いて、「ログイン名@接続先 password:」のように、パスワードプロンプトが表示されます。「鍵ファイル」を使ってログインするように設定されている場合は、鍵に設定したパスワードを、鍵ファイルを使用していない場合は、接続先のログインパスワードを入力します。
【※】ssh接続には「公開鍵」と「秘密鍵」の2つの鍵ファイルを使用して接続します。鍵ファイルは「ssh-keygen」コマンドで作成し、公開鍵をサーバに、秘密鍵は自分の手元に置いて管理します。
scp 接続先:パス名
scp 接続先:パス名 保存場所
(リモートコンピュータにあるファイルをローカルにコピーする)(画面1)
なお、2回目以降はパスワードを入力するだけで、コピーできます(画面2)。
自分のコンピュータ(ローカル環境)にあるファイルを、別のコンピュータ(リモート環境)にコピーしたい場合は「scp ファイル名 接続先:保存パス」のように指定します。
接続先の“カレントディレクトリ”は、ログインユーザーのホームディレクトリになります。従って、「scp ファイル名 ログイン名@接続先:.」のように指定すると、ログインに使用したユーザーのホームディレクトリにファイルが保存されます。
保存先に同名ファイルがある場合は、上書きされて保存されます。事前にファイルの有無を調べたい場合は、sshでlsコマンドなどを実行して確認しておくとよいでしょう(第80回参照)。
scp ファイル名 接続先:パス名
(ローカルのファイルをリモートにコピーする)(画面3)
【訂正:2018年6月19日午後19時40分】初出時、注釈で「sshコマンドの「-l」(ログイン名)は「-L」、「-p」(ポート番号)は「-P」である点に注意」としておりましたが、正しくは「sshコマンドの「-p」(ポート番号)は「-P」である点に注意」でした。お詫びして訂正いたします(編集部)。
【訂正:2018年6月1日午前10時15分】初出時、scpコマンドの主なオプションとして「-L ユーザー名 接続に使用するユーザー名を指定する」としておりましたが、このオプションはCentOS 7などには存在しませんでした。併せて、本文中の「別の名前でログインしたい場合は「-L」オプションを使うか」という箇所は「別の名前でログインしたい場合は」でした。お詫びして訂正いたします(編集部)。
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.