rsync核心是增量传输与路径斜杠语义:只同步差异部分以节省带宽,/src/同步内容、/src同步目录本身;需确认rsync安装、SSH连通性及目标写权限。

Linux 使用 rsync 同步目录与文件,核心是理解它的增量传输机制和路径写法。它不是简单复制,而是比对源与目标的差异,只传变化部分,既省带宽又快。
同步前必须确认的三件事
确保两端都已安装 rsync:
rsync --version —— 有输出即已就绪(多数发行版默认预装)
检查 SSH 连通性(远程同步时):
ssh user@host —— 能免密登录最佳,否则每次都要输密码
注意路径末尾斜杠的影响:
rsync -a /src/ /dst/ → 同步 src 目录下的内容
rsync -a /src /dst/ → 同步 src 整个目录(即创建 dst/src)
常用同步场景与命令写法
-
本地目录间同步(如备份配置):
rsync -avz /etc/nginx/ /backup/nginx/ -
推送文件到远程服务器(本地→远程):
rsync -avz --delete /var/www/ user@192.168.1.100:/var/www/
--delete 表示删掉目标中源里已不存在的文件,保持严格一致 -
拉取远程文件到本地(远程→本地):
rsync -avz user@192.168.1.100:/home/user/logs/ ~/logs/ -
指定 SSH 端口或参数(非标准 22 端口):
rsync -avz -e "ssh -p 2222" /data/ user@host:/backup/
关键选项说明(按实用频率排序)
- -a:归档模式,等价于 -rlptgoD,保留权限、所有者、时间戳、软链等,日常同步首选
- -v:显示详细过程,看到哪些文件被传输,排错必备
- -z:传输中启用压缩,对文本类文件明显提速
- --delete:慎用但重要——确保目标完全镜像源,删除多余项
- -n(dry-run):模拟运行,只列出将要操作的文件,不实际执行,建议首次同步前加这个测试
避免踩坑的小提醒
- 远程用户需对目标路径有写权限;若同步到 /var/www,通常需 sudo,可用 rsync -avz --rsync-path="sudo rsync" ...(服务端需配 sudo 免密)
- 大文件或敏感数据同步时,优先走 SSH(默认),不用 rsync daemon 模式,更安全
- 同步脚本中建议加上 --exclude='.git' 或 --exclude='temp/' 排除不需要的目录
- 首次同步较慢,后续只要文件微改,速度极快——这是 rsync 的真正价值所在


















