Linux rsync数据同步配置:从安装到定时增量同步实操
rsync 是 Linux 下常用的文件同步工具,核心优势是增量传输:只复制发生变化的部分,适合做网站目录备份、多台服务器之间同步数据。
下面按零基础可执行的顺序,从安装、配置到定时同步完整走一遍。
先确认环境和安装 rsync
两台服务器或本机与远程主机之间同步时,两端都需要安装 rsync。
以常见的 CentOS / Rocky Linux 和 Ubuntu / Debian 为例:
# CentOS / Rocky / AlmaLinux
sudo yum install -y rsync
# Ubuntu / Debian
sudo apt update && sudo apt install -y rsync
安装完成后检查版本:
rsync --version
能正常输出版本信息即表示安装成功。
如果提示 command not found,说明软件未安装或 PATH 异常,先解决安装问题再继续。
配置 SSH 免密登录
远程同步最常用的方式是走 SSH 通道,避免每次输入密码。
在源服务器上生成密钥并推送到目标服务器:
ssh-keygen -t rsa -b 4096
# 一路回车,默认生成在 ~/.ssh/id_rsa
ssh-copy-id root@目标服务器IP
执行后测试免密是否生效:
ssh root@目标服务器IP
如果不需要密码就能登录,说明免密配置完成。注意:生产环境建议使用普通用户加 sudo,而不是直接长期使用 root 远程登录。
本地与远程同步命令写法
rsync 的命令结构是 rsync [选项] 源路径 目标路径,源或目标带冒号表示远程。
几个关键选项先记住:
-a:归档模式,保留权限、时间、软链接等属性-v:显示详细过程-z:传输时压缩,适合跨公网--delete:让目标目录与源目录完全一致,会删除目标端多余文件--exclude:排除指定文件或目录
本地目录同步示例:
rsync -av /data/www/ /backup/www/
注意源路径末尾的斜杠:/data/www/ 表示同步目录内容,/data/www 表示同步目录本身。
写错会导致目标端多一层目录。
远程推送(本机到远程):
rsync -avz /data/www/ root@目标服务器IP:/data/www/
远程拉取(远程到本机):
rsync -avz root@目标服务器IP:/data/www/ /data/www/
首次同步建议先加 --dry-run 做演练,确认文件列表无误后再去掉该参数正式执行。
用 crontab 设置定时同步
手动同步适合临时操作,长期同步建议交给定时任务。
编辑当前用户的 crontab:
crontab -e
加入一行,例如每天凌晨 2 点同步一次:
0 2 * * * /usr/bin/rsync -avz --delete /data/www/ root@目标服务器IP:/data/www/ >> /var/log/rsync_www.log 2>&1
保存后查看任务是否写入:
crontab -l
避坑提醒:crontab 中建议使用命令绝对路径,例如 /usr/bin/rsync,因为 cron 环境变量与登录 shell 不同,直接写 rsync 可能找不到命令。
另外日志重定向要加上,否则出错了很难排查。
常见报错与排查方向
报错 Permission denied (publickey):SSH 免密未生效。
检查 ssh-copy-id 是否执行成功,以及目标服务器 ~/.ssh/authorized_keys 权限是否为 600。
报错 rsync: command not found:远程主机没有安装 rsync。
登录目标服务器执行安装命令。
同步后目标文件权限异常:检查是否使用了 -a,以及源目录权限本身是否合理。
不要随意加 --no-perms 掩盖问题。
--delete 误删文件:这是最危险的操作。
使用前务必确认源目录正确,并建议先加 --dry-run 预览删除列表。
生产环境可先做一次完整备份。
验证同步是否成功
同步完成后,用以下方式确认结果:
# 对比两端目录大小
du -sh /data/www/
# 查看目标端文件列表
ls -l /data/www/
# 再次执行同步,观察是否还有传输
rsync -avz --dry-run /data/www/ root@目标服务器IP:/data/www/
如果第二次 dry-run 没有文件传输,说明两端已一致。
定时任务是否执行,可以查看日志文件:
tail -f /var/log/rsync_www.log
几个容易忽略的细节
- 同步前确认磁盘空间充足,
df -h查看目标分区剩余容量 - 大量小文件同步时,
-z压缩收益有限,可去掉减少 CPU 开销 - 跨公网同步建议限制带宽,使用
--bwlimit=5000表示限制约 5MB/s - 重要数据不要只依赖单向同步,定期做独立备份更稳妥
按以上步骤配置完成后,rsync 就能承担日常的 Linux 数据同步任务。
建议先在测试目录跑通流程,再应用到正式环境。