scp -r 可递归复制远程目录,需确保远程目录可读、本地目标路径存在,命令格式为 scp -r 用户名@主机:远程路径 本地路径,支持 -P 指定端口、-i 使用密钥、-C 压缩、-p 保留属性、-v 查看详情。

用 scp -r 就能递归复制远程服务器的整个目录,关键在于路径写法和权限确认。
确认远程目录可读且本地目标存在
远程目录必须对登录用户有读取权限,否则会提示“Permission denied”或“no such file”。本地目标路径(如 /backup/)建议提前创建好,否则 scp 会把远程目录名作为文件名直接放在指定路径下(例如 scp -r user@host:/data /tmp 若 /tmp 存在,就生成 /tmp/data;若 /tmp 不存在,则报错)。
基本命令格式
scp -r 用户名@远程主机IP:远程目录路径 本地目标路径
-
-r是必需参数,表示递归处理子目录和文件 - 远程路径以冒号
:分隔,前面是用户名@主机,后面是绝对或相对路径 - 本地目标路径末尾是否加
/不影响结构,但加/更明确指向目录
常见写法示例:
- 把远程
/var/log/nginx/拷到本地当前目录下的nginx_backup文件夹:scp -r user@192.168.1.100:/var/log/nginx ./nginx_backup - 下载到已有目录
/home/me/logs/(确保该目录存在):scp -r user@192.168.1.100:/var/log/nginx /home/me/logs/
遇到端口非22或需密钥认证时
- 指定 SSH 端口(注意是大写
-P):scp -P 2222 -r user@192.168.1.100:/etc/nginx ./nginx_conf - 使用私钥登录(避免输密码):
scp -i ~/.ssh/mykey.pem -r admin@10.0.0.5:/opt/appdata ./local_app
提升效率与安全性的小技巧
- 加
-C启用压缩,适合文本类大目录(如日志、配置):scp -C -r user@host:/home/user/project ./ - 加
-p保留原始时间戳和权限(对部署或审计有用):scp -p -r user@host:/etc/ssl ./backup_ssl - 加
-v查看详细过程,排查连接或权限问题:scp -v -r user@host:/tmp/dump /mnt/external/
不复杂但容易忽略。


















