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

scpコマンドの使い方

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/student

test.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:/tmp

SSHの-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:/backup

SSH通信中に圧縮が行われます。

テキストファイルでは効果が高いです。

サーバ間コピー

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ローカルコピー
scpSSH経由コピー

cpは同じサーバ内で利用します。

scpはネットワーク越しのコピーです。

scpとsftpの違い

項目scpsftp
用途単純転送対話型転送
操作性コマンド型FTPライク
自動化得意やや不向き

単純なファイル転送ならscpが便利です。

scpとrsyncの違い

大量データではrsyncが利用されることがあります。

項目scprsync
差分転送不可可能
転送速度普通高速
用途単純コピー同期

バックアップ用途では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との使い分けも学習していくとよいでしょう。