rsync 是 Linux 下最常用、最可靠的文件同步工具,支持本地复制、远程同步、增量传输、断点续传和权限保留;其核心优势是只传输变化部分,节省带宽与时间,常用选项包括 -a(归档)、-v(详细)、-P(进度+断点)、--delete(严格同步)及 --dry-run(预览),路径末尾斜杠影响同步内容。

rsync 是 Linux 下最常用、最可靠的文件同步工具,它支持本地复制、远程同步、增量传输、断点续传和权限保留等多种能力,比 scp、cp 等更高效、更灵活。
rsync 核心优势:只传变化,节省带宽和时间
rsync 默认采用“差量传输”机制:它会对比源与目标文件的大小、修改时间、校验和(可选),只传输内容有差异的部分。对大文件(如日志、数据库备份)或网络不稳场景特别友好。
- 首次同步会完整复制;后续同步仅更新变动块(非整文件)
- 加 -z 可启用压缩传输(适合慢网),但会增加 CPU 开销
- 加 --delete 可让目标严格匹配源(删除目标中源没有的文件),慎用,建议先加 --dry-run 预览
常用同步命令格式与关键选项
基本语法统一为:rsync [选项] 源路径 目标路径,路径可为本地路径或 user@host:/path 远程地址。
- -a:归档模式(等于 -rlptgoD),保留权限、属主、时间戳、软硬链接等,日常同步首选
- -v:显示详细过程;-h:以易读单位(K/M/G)显示大小
- -P:显示进度 + 断点续传(等价于 --partial --progress)
- --exclude='*.tmp':跳过匹配的文件或目录(支持通配符和多条)
- --rsync-path="sudo rsync":当目标需 root 权限时(如同步到 /var/www),在远端提权执行
实用同步场景示例
以下命令均经过验证,可直接调整路径后使用:
-
本地目录同步:
rsync -avh /data/src/ /backup/data/(注意源路径末尾的 /,表示同步目录内容而非整个目录) -
远程备份(SSH 默认端口):
rsync -avzP user@192.168.1.100:/home/user/docs/ ./docs-backup/ -
远程备份(自定义 SSH 端口):
rsync -avzP -e "ssh -p 2222" user@server:/var/log/nginx/ ./nginx-logs/ -
镜像网站目录(含删除):
rsync -avh --delete --exclude='.git' /var/www/site/ user@prod:/var/www/site/
提升稳定性和安全性的建议
生产环境使用 rsync,不能只靠命令行,还需配套习惯和配置:
- 用 SSH 密钥免密登录,避免脚本中硬编码密码
- 重要同步任务写成 shell 脚本,开头加
set -e确保出错中断 - 配合 cron 定时执行前,先手动运行并加 --dry-run 测试逻辑
- 目标路径建议用绝对路径,避免因 cron 的默认 $PATH 或工作目录引发问题
- 敏感数据同步可加 --filter='protect *.env' 防止覆盖配置文件
基本上就这些。rsync 不复杂但容易忽略细节,掌握 -a、-v、-P、--delete 和路径斜杠含义,再结合 --dry-run 养成预检习惯,就能稳稳搞定 95% 的同步需求。










