rsync 默认通过对比文件大小和修改时间(mtime)实现增量备份,仅传输差异部分;常用命令为 rsync -avh --delete /source/ /backup/,配合 -n 预览、--checksum 强制内容比对等参数可提升可靠性与灵活性。

rsync 默认就是增量备份工具,只要用对参数,它天然只传变化的文件——不是靠“额外设置”,而是靠它自身的比对逻辑决定哪些该传、哪些跳过。
核心原理:它怎么知道哪些是“差异”?
rsync 默认使用 “quick check” 算法:对比源文件和目标文件的 大小 和 修改时间(mtime)。只要两者都一致,就跳过;任一不同,就传输。
- 适合绝大多数日常场景(如文档、代码、配置文件更新)
- 注意:如果系统时间不准,或文件被 touch 修改了时间但内容没变,可能误判
- 如果源端 mtime 被重置(比如某些容器、NFS 挂载、Git checkout),建议加 --checksum 强制按内容比对
最常用且安全的增量备份命令
这条命令兼顾效率、一致性与可读性:
- -a:归档模式,保留权限、时间戳、链接、属主等全部属性
- -v:显示详细过程,方便确认同步了什么
- -h:人类可读格式(如显示 2.4M 而非 2457600 字节)
- --delete:让备份目录严格镜像源目录(删掉源里已不存在的文件)
⚠️ 使用 --delete 前务必先加 -n(dry-run)预览操作:
rsync -avn --delete /source/ /backup/
应对特殊场景的补充技巧
当默认逻辑不够可靠时,用这些参数微调:
- --checksum:跳过 mtime 判断,全程计算文件 MD5 比对内容 —— 准但慢,适合关键数据或 mtime 不可信环境
- --exclude='*.tmp':跳过临时文件,避免把无意义文件同步过去
- --partial --inplace:大文件断网后能续传(--inplace 直接写目标文件,不建临时名)
- -z:远程传输时启用压缩,节省带宽(尤其跨公网)
自动化:每天自动执行一次
把上面命令写进脚本,再用 cron 定时触发即可:
- 新建脚本:
/usr/local/bin/backup-docs.sh,内容含 rsync 命令 + 日志记录 - 给脚本加执行权限:
chmod +x /usr/local/bin/backup-docs.sh - 编辑 crontab:
crontab -e,添加一行:
30 2 * * * /usr/local/bin/backup-docs.sh(每天凌晨 2:30 执行)











