实战

# 本地 → 远端
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。