【 scp 】コマンド――リモートマシンとの間でファイルをコピーするLinux基本コマンドTips(81)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「scp」コマンドです。

» 2017年01月27日 05時00分 公開
[西村めぐみ@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、リモートマシンとの間でファイルをコピーする「scp」コマンドです。

scpコマンドとは?

 「scp」はリモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用するコマンドです。同じようなコマンドに「rcp(リモートコピー)」がありますが、scpコマンドは通信にSSHを使用する点が異なります。

 なお、scpコマンドの実行には、「sshd(SSH daemon:SSHのサーバプログラム)」が動作しているなど、SSH接続が可能である必要があります。



scpコマンドの書式

scp [オプション] [ログイン名@ホスト名]パス [ログイン名@ホスト名]パス

※[ ]は省略可能な引数を示しています




scpコマンドの主なオプション

 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


画面1 画面1 「192.168.2.4」にある「/etc/bash.bashrc」をコピーして、「~/Downloadsのbashrc.ubuntu」という名前でローカルに保存する

 なお、2回目以降はパスワードを入力するだけで、コピーできます(画面2)。

画面2 画面2 2回目以降は接続の確認メッセージは表示されない


ローカルにあるファイルをリモートコンピュータにコピーする

 自分のコンピュータ(ローカル環境)にあるファイルを、別のコンピュータ(リモート環境)にコピーしたい場合は「scp ファイル名 接続先:保存パス」のように指定します。

 接続先の“カレントディレクトリ”は、ログインユーザーのホームディレクトリになります。従って、「scp ファイル名 ログイン名@接続先:.」のように指定すると、ログインに使用したユーザーのホームディレクトリにファイルが保存されます。

 保存先に同名ファイルがある場合は、上書きされて保存されます。事前にファイルの有無を調べたい場合は、sshでlsコマンドなどを実行して確認しておくとよいでしょう(第80回参照)。

コマンド実行例

scp ファイル名 接続先:パス名

(ローカルのファイルをリモートにコピーする)(画面3


画面3 画面3 scpでローカルのカレントディレクトリにある「tmp.txt」を、リモートの「~/Desktop」にコピーした


【訂正: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.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。