直接用 scp -r 即可完成服务器间指定文件夹的递归拷贝,关键在于路径写法要准确、权限和网络连通性需提前确认;-r 选项必须添加,路径推荐使用绝对路径,末尾斜杠影响是否新建目录,大文件可加 -C 启用压缩。

直接用 scp -r 即可完成服务器间指定文件夹的递归拷贝,关键在于路径写法要准确、权限和网络连通性需提前确认。
基础命令格式与路径写法
scp 的 -r(recursive)选项专为目录设计,必须加,否则会报“not a regular file”错误。路径支持绝对路径和相对路径,但推荐统一用绝对路径避免歧义。
- 从本地复制文件夹到远程服务器:
scp -r /path/to/local/dir user@remote_ip:/path/to/remote/ - 从远程服务器复制文件夹到本地:
scp -r user@remote_ip:/path/to/remote/dir /path/to/local/ - 在两台远程服务器间复制(需本地中转,且本地能同时访问双方):
scp -r user1@server1:/data/ user2@server2:/backup/
常见问题与应对建议
实际使用中容易卡在连接、权限或路径上,不是命令本身复杂,而是环境细节决定成败。
- 确保目标服务器的
sshd正常运行,且防火墙放行 22 端口 - 用户需对源目录有读取权限,对目标目录有写入权限;若提示“Permission denied”,优先检查目标路径父目录的写权限(如
/home/user/是否允许该用户写入) - 路径末尾加不加斜杠
/有区别:dir/表示复制目录内容,dir(无斜杠)表示复制整个目录(即在目标位置新建同名目录) - 大文件或大量小文件时,可加
-C启用压缩传输,提升效率:scp -rC ...
替代方案:rsync 更适合频繁同步
如果需要增量同步、断点续传或排除特定文件,rsync 比 scp 更合适,语法也接近:
rsync -avz -e "ssh -p 22" /local/dir/ user@remote:/remote/dir/-
-a保留属性,-v显示过程,-z压缩传输,-e指定 SSH 参数(比如非标端口) - 首次可用
scp快速迁移,后续维护推荐rsync
安全与效率小提醒
生产环境别裸用密码登录,建议配置 SSH 密钥免密认证,既安全又省事。
- 生成密钥:
ssh-keygen -t ed25519 - 推送公钥:
ssh-copy-id user@remote_ip - 之后所有
scp和rsync命令都不再需要输密码 - 敏感数据传输前可先用
tar | ssh打包加密,但日常运维中scp已默认走 SSH 加密通道,无需额外处理











