如何透過 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 命令供你複核。
常見問題
怎麼 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 瀏覽傳輸,不用敲路徑