实战
# 本地 → 远端
scp file.txt user@host:/tmp/
# 远端 → 本地
scp user@host:/tmp/file.txt .
# 整目录(要 -r)
scp -r myfolder user@host:/tmp/
# 远端 → 远端(经过本地中转)
scp user1@host1:/path user2@host2:/path
常用参数
| 参数 | 含义 |
|---|---|
-r |
递归(目录必须) |
-P PORT |
自定义端口(大写 P) |
-i KEY |
指定私钥 |
-p |
保留时间戳 / 权限 |
-v |
verbose |
-q |
安静 |
-l KBPS |
限速(千比特/秒) |
-3 |
远端到远端经过本地(默认) |
-o "opt" |
传 ssh 选项 |
例子
# 不同端口
scp -P 22022 file.txt user@host:/tmp/
# 用 ssh config 别名
scp file.txt prod:/tmp/ # 用 ~/.ssh/config 的 Host prod
大批量用 rsync 更好
scp 不能:
- 断点续传
- 增量同步
- 显示进度详情
- 排除文件
# 同样的事 rsync 更强
rsync -avz --progress folder/ user@host:/dest/
坑
-P是大写(端口);-p是小写(保留权限)—— 别搞混- 文件名含空格要双引号:
scp "my file.txt" user@host: - scp 在 OpenSSH 9.0+ 改用了 SFTP 协议——绝大多数行为兼容但少数 edge case 不同
- 大量小文件 scp 慢——用 tar 打包再传或用 rsync
现代建议
# 简单单文件 → scp 够用
# 多文件 / 大数据 → rsync
# 完整目录同步 → rsync --delete
详见下一篇 rsync。