Linux環境でリモートサーバーとファイルのやり取りを行う際、便利で安全な手段のひとつが「scp
」コマンドです。SSH(Secure Shell)を利用して暗号化された通信を行いながら、ファイルをコピーできるこのコマンドは、日常的な業務からサーバー管理まで、幅広く利用されています。本記事では、scp
コマンドの基本的な使い方から、実践的な活用例、注意点までをわかりやすく解説します。初心者の方でも理解しやすいように、具体的なコマンド例を交えながら丁寧に紹介していきます。
scpとは何か?基本的な役割と特徴
scp
(secure copy)は、SSHプロトコルを利用して、ファイルを安全にコピーするためのコマンドです。
特徴は以下のとおりです:
- SSHを利用して通信するため、暗号化されており安全
- ローカル↔リモート、リモート↔ローカルの両方に対応
- ディレクトリの再帰的コピーも可能
- シンプルな構文で初心者にも扱いやすい
SSHアクセスが可能なサーバーがあれば、すぐに利用できる点も大きなメリットです。
scpコマンドの基本構文
scp
の基本的な構文は以下の通りです:
scp [オプション] コピー元 コピー先
たとえば、自分のローカル環境からリモートサーバーへファイルを転送する場合は次のようになります。
scp file.txt username@remote_host:/home/username/
逆に、リモートからローカルにファイルをダウンロードしたい場合:
scp username@remote_host:/home/username/file.txt ./
.scp
は通常のcp
とよく似ていますが、リモートホストの指定にusername@host
の形を使うのが特徴です。
実践例:ローカルからリモートにファイルをコピーする
単一ファイルのコピー
scp myfile.txt user@example.com:/home/user/
このコマンドで、ローカルのmyfile.txt
がリモートの/home/user/
にコピーされます。
複数ファイルのコピー
scp file1.txt file2.txt user@example.com:/home/user/
スペースで区切ることで、複数ファイルの送信も可能です。
実践例:リモートからローカルにファイルをコピーする
scp user@example.com:/home/user/report.pdf ./
.
は現在のディレクトリを意味します。この例では、リモートのファイルreport.pdf
が自分のPCのカレントディレクトリに保存されます。
ディレクトリを再帰的にコピーする方法
ディレクトリを含めたコピーを行うには、-r
オプションを使用します。
scp -r myfolder user@example.com:/home/user/
このコマンドでは、myfolder
ディレクトリごとリモートに転送されます。内部のファイルやサブディレクトリもすべて含まれます。
ポート番号を指定したい場合
SSHのデフォルトポート(22番)以外を使っている場合は、-P
オプションで指定します。
scp -P 2222 file.txt user@example.com:/home/user/
ここで注意したいのは、-P
は大文字であることです。小文字の-p
は別の意味になります。
ファイル転送時の進捗状況を表示する
scp
コマンドはデフォルトで転送進捗を表示しますが、-v
オプションを使えば、さらに詳細な通信ログを見ることができます。
scp -v file.txt user@example.com:/home/user/
トラブルシュートや確認用に便利です。
転送に失敗する場合のよくある原因と対処法
1. 接続できない(ホスト名やポート番号の誤り)
SSHが通っていない場合、scp
も当然使えません。まずは次のコマンドで接続確認をしましょう。
ssh user@example.com
2. パーミッションエラー
リモート側のディレクトリに書き込み権限がないと転送に失敗します。ls -ld
で権限を確認しましょう。
3. ファイアウォールの影響
SSHポートがブロックされている場合、通信できません。ネットワーク管理者に確認する必要があります。
scpとrsyncの違いとは?
似たような機能を持つrsync
というコマンドもあります。主な違いは以下の通りです:
項目 | scp | rsync |
---|---|---|
基本機能 | ファイルのコピー | 差分同期やコピー |
暗号化 | SSHで対応 | SSHで対応可 |
転送速度 | 常に全データを送信 | 差分のみ送信で高速 |
オプション | 少なめで簡単 | 多機能で柔軟だが複雑 |
単純なファイルコピーにはscp
、効率的な同期にはrsync
が向いています。
セキュリティ上の注意点
scp
はSSHベースで安全性が高いとはいえ、以下の点に注意しましょう:
- パスワード認証よりも公開鍵認証を推奨
- 外部の公開ネットワークでの利用時はVPNなどと併用
- ファイル名にスペースがある場合はクォートで囲む
例:
scp "my file.txt" user@example.com:/home/user/
まとめ
scp
コマンドは、Linuxでファイルをリモートサーバーとやり取りする際に非常に便利なツールです。SSH経由で安全にファイルをコピーでき、コマンドもシンプルで覚えやすいため、初心者から上級者まで幅広く使われています。この記事で紹介した基本構文やオプション、注意点を理解すれば、実際の作業でも安心してscp
を使えるようになるでしょう。
SSHを使ったファイル転送に一歩踏み出したい方は、まずは自分のローカル環境とリモートサーバー間で試してみてください。トライ&エラーを重ねながら、少しずつ慣れていくのが上達の近道です。