很多人一开始会把 rsync 和 scp 当成“都是拷文件的命令”,但真用起来就会发现:它们解决的问题并不完全一样。那它们到底差在哪?什么时候该用哪个?
先说 scp。
scp 的思路非常直白:我有一个文件,你帮我从 A 拷到 B。它基于 SSH,安全、简单、几乎所有 Linux 都自带,用起来一条命令就结束。但也正因为“直来直去”,它有几个明显特点:
拷贝时是整体传输,不管目标端有没有这个文件、是不是只改了一点点,都会重新完整传一遍;传输一旦中断,基本只能重来;功能上更像是一个“安全版 cp + 网络”。
那 rsync 呢?
rsync 更像是为“长期同步”和“大量数据”设计的工具。它的核心优势在于 增量同步:会先对比源和目标,只传输真正发生变化的那部分数据。文件大、改动小的时候,这个优势非常明显。
此外,rsync 可以断点续传、可以保持权限/属主/时间戳、可以做排除规则,甚至还能干脆当成“部署工具”用。缺点也很明显:命令比 scp 复杂,新手第一次看会有点劝退。
所以,本质区别可以这样理解:
scp:简单粗暴,一次性拷贝,适合临时、少量文件传输
rsync:精细高效,支持增量和同步,适合频繁、长期、数据量大的场景
什么时候用哪个?
如果你只是临时从服务器上拉一个日志、拷一个安装包,scp 足够了,简单省事。
但如果你是在做备份、部署、目录同步,或者每天都要传一堆文件,那就别犹豫了,rsync 才是正解。
说到底,一个像“搬一次就走”,一个像“长期对账同步”。选哪个,取决于你是不是只拷这一次。