チュートリアル

SSH でディレクトリをコピーする方法(scp -r、rsync、sftp)

scp はフォルダのコピーに -r が必要です:scp -r ./folder user@host:/path/。大きな転送や繰り返す転送には rsync、モバイルでは SFTP を使います。よくあるエラー(-r と大文字 -P の落とし穴)と、どのツールを選ぶか。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

SSH でディレクトリをコピーする方法

scp は、再帰を指示しない限りフォルダをコピーしません。-r を付けます:

scp -r ./myfolder user@host:/remote/path/

これでディレクトリツリー全体がコピーされます。大きな転送や繰り返す転送には rsync のほうが優れています(再開でき、変更のないファイルはスキップします)。モバイルなら SFTP アプリがタップひとつで済ませてくれます。以下でそれぞれと、よくあるエラーを説明します。

scp -r —— 直接的な方法

# local folder → server
scp -r ./project user@host:/var/www/

# server folder → local
scp -r user@host:/var/log/nginx ./logs

# non-default port (note: capital -P)
scp -P 2222 -r ./project user@host:/var/www/

多くの人がはまる落とし穴:scp はポート指定に大文字の -P を使います(小文字の -p はタイムスタンプを保持します)。これらを取り違えるのが、よくある「scp が動かない」原因です。

rsync —— 大きなコピーや繰り返すコピーに最適

大きいもの、同期するもの、複数回実行するものには rsync を使いましょう。変更があった分だけを転送し、中断されても再開します:

rsync -avz ./project/ user@host:/var/www/project/

# with a non-default port or a specific key:
rsync -avz -e "ssh -p 2222 -i ~/.ssh/mykey" ./project/ user@host:/var/www/project/

-a は権限を保持して再帰し、-v は詳細表示、-z は圧縮します。ソース末尾のスラッシュ(project/)に注意してください——これはその中身をコピーします。スラッシュがないとフォルダ自体をコピーします。(rsync で特定の鍵を使う方法は 特定の SSH 鍵を使う を参照。)

sftp —— 対話的に、そして get -r

閲覧しながら操作したいなら、sftp は get -r でディレクトリをダウンロードします:

sftp user@host
sftp> get -r /remote/folder

3 つのツールとそれぞれの使いどころについては SSH でファイルを転送する を参照してください。

よくあるエラー

  • "not a regular file" / 何もコピーされない —— ディレクトリに -r を付け忘れています。
  • ポートが違う / connection refused —— scp ではポートに -P(大文字)を使い、ポート番号を確認してください。
  • Permission denied —— 宛先パスに書き込めないか、鍵認証に失敗しています(publickey ガイド)。

スマホからフォルダをコピーする

タッチキーボードで scp -r と 2 つのリモートパスを打ち込むのは、まさにモバイルを苦痛にするたぐいの作業です。SFTP 対応のクライアントなら、それを閲覧操作に変えてくれます:サーバーのファイルシステムを開き、フォルダを選んで、ダウンロードまたはアップロードする。TermAI の SFTP では、サーバー上のファイルを閲覧・転送し、直接編集することもできます。スクリプト化したコピーには、AI アシスタントがあなたが確認するための正しい scp -r や rsync コマンドを書いてくれます。

ディレクトリをコピーする rsync コマンドを提案する TermAI
ガラスの上で scp -r と 2 つのリモートパスを打ち込む代わりに、SFTP で閲覧する —— または AI に正確な rsync/scp コマンドを書いてもらう。

FAQ

ディレクトリを scp するには?
-r を付けて再帰します:scp -r ./folder user@host:/path/。非デフォルトのポートには大文字の -P を使います。

なぜ scp がフォルダをコピーしないのか?
-r がないと scp はディレクトリを拒否します("not a regular file")。-r を付けてください。ポートに大文字の -P を使ったかも確認しましょう。

ディレクトリには scp と rsync のどちら?
一回きりの小さなコピーには scp -r。大きいもの、繰り返すもの、中断されうるものには rsync —— 再開でき、変更のないファイルはスキップします。

sftp でディレクトリをダウンロードするには?
sftp user@host で接続し、get -r /remote/folder を実行します。

クイックファクト

  • フォルダを scp する:scp -r ./folder user@host:/path/(-r は必須)
  • ポート:scp は大文字の -P を使う(小文字の -p = 時刻を保持)
  • 大きい/繰り返す:rsync -avz src/ user@host:/dest/ —— 再開し、変更のないものはスキップ
  • sftp:get -r /remote/folder
  • モバイル:パスを打ち込む代わりに SFTP で閲覧して転送する
TermAI を試す

iOS / Android で無料。無料プランは AI 5回/日、SSH/SFTP 無制限、Tailscale 内蔵。

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.