scp适合一次性完整复制,rsync擅长增量同步与断点续传;scp无差异识别能力,rsync通过比对文件属性只传变化部分,支持权限、时间戳保留及--delete等精细控制。

scp 和 rsync 都能完成 Linux 下的远程文件传输,但适用场景和行为逻辑差异明显:scp 更适合简单、一次性的安全拷贝;rsync 则擅长增量同步、断点续传和精细控制。
核心区别:传输机制不同
scp 基于 SSH 协议,每次执行都是完整复制——不管目标文件是否存在、是否已部分相同,它都会重新传输整个文件。rsync 默认使用自己的算法(可走 SSH 通道),先比对源与目标的文件大小、修改时间、校验和(启用 --checksum 时),只传输差异部分。
- scp 本质是“复制”,无本地/远程状态感知能力
- rsync 本质是“同步”,具备文件级差异识别和局部更新能力
- rsync 在首次同步时可能略慢(需扫描比对),但后续同步极快
典型使用场景对比
用 scp 的情况:临时传一个日志、配置文件或小脚本,不关心历史版本,也不需要重试或跳过已存在内容。
用 rsync 的情况:备份网站目录、同步开发环境代码、上传大体积数据集(如数据库 dump)、需要保留软链接/权限/时间戳,或网络不稳定需断点续传。
- 传单个文件且图省事 → scp 更简洁(scp file.txt user@host:/path/)
- 传整个目录并希望下次只传改动 → rsync 更高效(rsync -avz --delete /local/ user@host:/remote/)
- 中途断了要继续传 → rsync 自动处理;scp 必须重来
常用选项与关键细节
scp 默认不保留权限、所有者、时间戳(除非加 -p),也不能排除文件或压缩传输。rsync 通过组合选项实现高度定制:
- -a:归档模式(等价于 -rlptgoD),保留权限、链接、时间、属主等
- -v:显示详细过程;-z:传输中启用 gzip 压缩(适合慢网络)
- --delete:删除目标端有而源端没有的文件(慎用,建议先加 --dry-run 测试)
- --exclude='*.tmp':跳过匹配的文件,支持通配和规则文件
性能与安全性补充说明
两者都默认通过 SSH 加密通道传输,安全性一致。但 rsync 在大数据量下更省带宽和时间;scp 因无缓存和比对逻辑,在小文件高频传输时启动开销更低。若需极致速度且信任内网环境,rsync 可搭配 --rsh='ssh -o StrictHostKeyChecking=no' 减少交互延迟,但不应牺牲基础安全验证。










