scpコマンドの使い方|SSH経由で安全にファイル転送する方法

目次
scpコマンドを使ってSSH経由で安全にファイルを転送しよう
Linuxサーバを管理していると、設定ファイルやログファイル、バックアップデータなどをサーバ間で転送する機会が頻繁にあります。
そのような場面で長年利用されてきたのがscpコマンドです。
scpはSSHの暗号化通信を利用してファイルを転送するため、安全にデータをやり取りできます。
特にLinux管理者やインフラエンジニアにとっては基本中の基本ともいえるコマンドです。
現在ではsftpやrsyncを利用するケースも増えていますが、scpは今でも非常に多くの環境で利用されています。
本記事ではscpコマンドの基本的な使い方から実務で利用するオプションまで詳しく解説します。
scpとは
scp(Secure Copy)は、SSHプロトコルを利用してファイルをコピーするためのコマンドです。
通信はSSHで暗号化されるため、FTPのように平文でデータが流れることはありません。
主な用途は以下の通りです。
- サーバへファイルを送る
- サーバからファイルを取得する
- サーバ間でファイルを転送する
- バックアップを取得する
- 設定ファイルを配布する
Linuxサーバ管理では非常によく利用されます。
scpの基本構文
基本構文は次の通りです。
scp コピー元 コピー先
ローカルからサーバへ送る場合です。
$ scp file.txt user@192.168.60.101:/tmp非常にシンプルです。
ローカルからサーバへファイルを送る
最もよく利用するパターンです。
$ scp test.txt student@192.168.60.101:/home/studenttest.txtがサーバへコピーされます。
接続時にはSSH認証が行われます。
サーバからローカルへファイルを取得する
逆方向のコピーも可能です。
$ scp student@192.168.60.101:/var/log/messages .現在のディレクトリへコピーされます。
ログ取得などでよく利用されます。
ディレクトリをコピーする
ディレクトリごと転送する場合は-rオプションを利用します。
$ scp -r website student@192.168.60.101:/var/www配下のファイルも含めてコピーされます。
Webコンテンツの配布などで利用されます。
別ポートへ接続する
SSHポートが22以外の場合は-Pオプションを利用します。
$ scp -P 2222 file.txt student@192.168.60.101:/tmpSSHの-pではなくscpでは-Pである点に注意しましょう。
秘密鍵を指定する
公開鍵認証を利用する場合です。
$ scp -i ~/.ssh/id_ed25519 file.txt student@192.168.60.101:/tmp実務ではこちらの利用が一般的です。
転送状況を表示する
scpは通常進捗を表示します。
大容量ファイルでは以下のような表示になります。
file.iso 100% 2GB 50MB/s転送速度や進捗率を確認できます。
圧縮して転送する
低速回線では-Cオプションが有効です。
$ scp -C backup.sql student@192.168.60.101:/backupSSH通信中に圧縮が行われます。
テキストファイルでは効果が高いです。
サーバ間コピー
scpはサーバ間コピーも可能です。
$ scp user1@server1:/tmp/test.txt user2@server2:/tmp管理者端末を経由せず直接転送されます。
複数サーバ運用では便利な機能です。
実務でよく使う例
設定ファイルを送る
$ scp named.conf root@dns01:/etc/named.confバックアップを取得する
$ scp root@db01:/backup/db.sql .ログを取得する
$ scp root@web01:/var/log/httpd/access_log .運用現場で頻繁に利用されます。
scpとcpの違い
| コマンド | 用途 |
|---|---|
| cp | ローカルコピー |
| scp | SSH経由コピー |
cpは同じサーバ内で利用します。
scpはネットワーク越しのコピーです。
scpとsftpの違い
| 項目 | scp | sftp |
|---|---|---|
| 用途 | 単純転送 | 対話型転送 |
| 操作性 | コマンド型 | FTPライク |
| 自動化 | 得意 | やや不向き |
単純なファイル転送ならscpが便利です。
scpとrsyncの違い
大量データではrsyncが利用されることがあります。
| 項目 | scp | rsync |
|---|---|---|
| 差分転送 | 不可 | 可能 |
| 転送速度 | 普通 | 高速 |
| 用途 | 単純コピー | 同期 |
バックアップ用途ではrsyncが好まれることがあります。
SSH設定ファイルとの連携
configを利用している場合です。
Host web01
HostName 192.168.60.101
User student
IdentityFile ~/.ssh/id_ed25519
すると以下で転送できます。
$ scp file.txt web01:/tmp非常に便利です。
よくあるエラー
Permission denied
Permission denied
主な原因です。
- 認証失敗
- 権限不足
- 保存先ディレクトリ権限
No such file or directory
ファイル名やパスの誤りです。
コピー元・コピー先を確認しましょう。
転送できない場合の確認ポイント
- SSH接続できるか
- ポート番号は正しいか
- 権限はあるか
- ディスク容量は十分か
- ファイアウォール設定は問題ないか
まずは通常のSSHログインが可能か確認することが重要です。
scp利用時の注意点
scpは便利ですが、大容量ファイルや定期同期には向きません。
そのような場合はrsyncの利用を検討しましょう。
ただし単純なファイル転送であれば現在でも非常に有効なツールです。
まとめ
scpはSSHを利用して安全にファイル転送を行うための基本コマンドです。
Linuxサーバ管理では設定ファイル配布、ログ取得、バックアップ回収など幅広い用途で利用されています。
特に「ローカル→サーバ」「サーバ→ローカル」の転送方法は必ず覚えておきたい操作です。
まずは基本的なscpコマンドを使いこなし、その後sftpやrsyncとの使い分けも学習していくとよいでしょう。





