如何通过 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 浏览传输,不用敲路径