rsync 是什么

一句话总结

rsync 是一个快速的文件复制/同步工具,只传输文件的变化部分,常用于备份、部署和跨机器同步。


🤔 为什么会有它 / 解决了什么问题

scpcp 每次复制整个文件,即使只改了一个字节也要全量传输。rsync 通过分块校验(delta algorithm)只传差异部分,大幅减少带宽和耗时,尤其适合大文件和增量备份。


🔍 具体原理 / 运作逻辑

rsync 把文件切成固定大小的块,计算每块的 checksum,和目标文件对比后只传输差异块。SSH 模式下数据走加密通道,无额外端口。


🧭 什么情况下会用到 / 什么场景会遇到它

  • 备份 Press 持久化卷:rsync -avz /var/lib/docker/volumes/press-sites/ backup@host:/backup/
  • Quartz 发布:sync.sh 用 rsync 把 Obsidian vault 增量推到 VPS
  • 容器间同步:Press Agent 用 rsync 将构建产物分发到 Bench 容器

🛠️ 怎么上手 / 在哪操作

rsync -avz <源路径> <目标路径>(SSH 模式加 -e ssh),常见选项:-a(归档)、-v(详情)、-z(压缩)、--delete(删除目标端多余文件)。


⚖️ 副作用 / 代价 / 取舍

--delete 用错方向会删目标端文件——源端少一个文件目标端就少一个。先 --dry-run(-n)预览再执行。大目录第一次扫描耗时较长。


🕰️ 来历

  • 谁提出/创造的:Andrew Tridgell(Samba 作者)和 Paul Mackerras
  • 什么时候出现的:1996 年首次发布

🔗 关联 / 经常一起出现的概念

  • SSH:rsync 默认的传输通道,加密且无需额外端口
  • Press 备份:cron job 用 rsync 把数据库备份和站点文件推送到 R2

⚠️ 注意事项 / 常见误区

路径末尾的斜杠 / 有语义区别——rsync -avz src/ dest 复制目录内容,rsync -avz src dest 复制目录本身。差一个斜杠结果完全不同。


📎 记忆锚点

rsync 是文件同步界的 diff——只传差异,不传完整文件,靠 checksum 高效比对。


📝 更新日志

日期改动原因
2026-07-13首次创建-