教學

如何透過 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 App 一點就傳。下面逐個講,以及常見報錯。

scp -r —— 直接法

# 本地文件夹 → 服务器
scp -r ./project user@host:/var/www/

# 服务器文件夹 → 本地
scp -r user@host:/var/log/nginx ./logs

# 非默认端口(注意:大写 -P)
scp -P 2222 -r ./project user@host:/var/www/

多數人踩的坑:scp 的連接埠用大寫 -P(小寫 -p 是保留時間戳)。搞混它們就是常見的"scp 不工作"原因。

rsync —— 大檔案或重複複製更好

凡是大的、要同步的、或不止跑一次的,用 rsync——它只傳變化的部分、被打斷也能續:

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

# 带非默认端口或指定密钥:
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

三個工具及各自適用場景見 透過 SSH 傳檔案。

常見報錯

  • "not a regular file" / 什麼都沒複製——對目錄忘了加 -r。
  • 連接埠錯 / connection refused——scp 用大寫 -P;查連接埠。
  • Permission denied——你對目標路徑沒有寫權限,或金鑰認證失敗(publickey 指南)。

在手機上複製資料夾

在觸控鍵盤上敲 scp -r 加兩個遠端路徑,正是手機讓人頭疼的事。一個支援 SFTP 的客戶端把它變成瀏覽:打開伺服器的檔案系統,選一個資料夾,下載或上傳。TermAI 的 SFTP 讓你瀏覽、傳輸、甚至直接編輯伺服器上的檔案;要腳本化複製,AI 助手會替你寫好對的 scp -r 或 rsync 命令供你複核。

TermAI 建議一條 rsync 命令複製目錄
不用在玻璃上敲 scp -r 加兩個遠端路徑——走 SFTP 瀏覽,或讓 AI 寫出確切的 rsync/scp 命令。

常見問題

怎麼 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 都有。免費檔每天 5 次 AI,SSH/SFTP 不限量,內建 Tailscale。

CC
Chen Chen — Founder of TermAI

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