scp – SSH を利用したファイル転送コマンド

リモートアクセス

scp コマンドは、SSH を利用して リモートサーバとローカル間で安全にファイルをコピー するコマンドです。
cp のような感覚で使えるため、サーバへのファイルアップロードやバックアップ取得に便利です。

本コマンドについては、下位互換のために残っていますが新規で使う用途には適していません。詳しくは以下の記事を参考にしてください

構文(Syntax)

scp [オプション] [USER@]HOST:SOURCE [DEST]
scp [オプション] [SOURCE] [USER@]HOST:DEST

主なオプション一覧

オプション説明使用例
-P PORT接続ポートを指定(デフォルト:22)scp -P 2222 file.txt user@host:/tmp/
-i KEY秘密鍵ファイルを指定scp -i ~/.ssh/id_rsa file.txt user@host:/tmp/
-rディレクトリを再帰的にコピーscp -r project user@host:/var/www/
-pタイムスタンプ・パーミッションを保持scp -p file.txt user@host:/tmp/
-v詳細なデバッグ出力scp -v file.txt user@host:/tmp/
-C圧縮転送を有効化scp -C largefile.iso user@host:/tmp/
-q進行状況などを非表示にするscp -q file.txt user@host:/tmp/

実行例

ローカルからリモートへファイルコピー

scp file.txt user@example.com:/home/user/

(ローカルの file.txt をリモートの /home/user/ にコピー)

リモートからローカルへコピー

scp user@example.com:/var/log/syslog ./syslog

ディレクトリを再帰的にコピー

scp -r website/ user@example.com:/var/www/html/

ポート指定してコピー

scp -P 2222 file.txt user@example.com:/tmp/

秘密鍵を指定してコピー

scp -i ~/.ssh/id_rsa backup.sql user@example.com:/home/user/

圧縮して高速転送

scp -C bigfile.iso user@example.com:/tmp/

エラー例(ホストが間違っている)

scp file.txt user@wronghost:/tmp/

出力例:

ssh: connect to host wronghost port 22: Connection refused
lost connection

関連コマンド

  • ssh : リモート接続
  • sftp : SSH を利用した FTP ライクなファイル転送
  • rsync : 差分転送や再開機能に優れたファイル同期ツール
  • cp : ローカルファイルコピー

備考

  • scp は OpenSSH に含まれていますが、最近はより柔軟な rsyncsftp の利用が推奨される場合もあります。
  • -r を使うときは誤操作でディレクトリ全体を上書きしないように注意が必要です。
  • 転送速度やネットワーク負荷を考慮するなら rsync -avz の方が効率的な場合があります。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント