1.1目标
- 存放备份数据专用的服务器
- 规格和配置: 硬盘空间足够即可
1.2选型
- 服务:rsyncd
- 搭配:定时任务+备份脚本(打包备份,传输备份到服务器,清理备份)
1.3应用场景
| rsync应用场景 | 目标 | 针对机器 |
| rsync+crond实现定时备份 | 配置文件,代码,日志,数据,不需要实时备份内容 | 绝大部分服务,机器都可以使用 |
| rsync+lscynd/sersync实现实时同步 | 针对数据相关的服务:存储(nfs),数据库(有主从了就不用其他工具了)例如用户的购物车等 | 存储(nfs) |
| 异地容灾(本质也是定时或实时同步) | 看公司是否需要异地备份 |
1)定时备份
2)实时同步
3)异地备份(异地容灾)
1.4环境准备
机器(本次用到的)
| 角色 | 主机名 | ip | 说明 |
| rsync服务端 | backup | 10.0.0.41(公网)/172.16.1.41(内网) | 生成环境中,磁盘空间大,性能可以一般 |
| rsync客户端 | nfs01 | 10.0.0.31/172.16.1.31 | 客户端—-(传数据)->服务端 |
1.5服务使用流程
1️⃣安装/部署
2️⃣配置(配置文件,添加虚拟用户,修改权限,创建密码文件,模块等)
3️⃣启动/开机自启动
4️⃣检查测试
5️⃣故障排查(总结积累)
6️⃣后续(备份,高可用,监控,安全….)
1)服务端vs客户端
| rsync服务端流程 | rsync客户端流程 |
| 1.检查软件是否安装 | 1.检查软件是否安装 |
| 2.配置文件,启动或重启,开机自启动 | 2.密码文件(只有密码) |
3.环境准备:用户,目录,权限,密码文件(用户:密码) | 3.测试的命令 |
| 4.测试(模拟客户端传输数据到服务端) | 4.定时任务与脚本 |
2)rsync服务端(守护进程模式)
①基础检查
②配置文件/etc/rsyncd.conf
③根据配置文件准备环境
④启动/重启服务
⑤服务端本地测试
3)rsync客户端
①检查与测试(给服务端传数据)
②密码交互问题
- 增量传输(只传输新增或修改):rsync—-同时缓解了带宽压力
- 全量传输(传输所有):scp
③小tips: rsync指定目录
在rsync命令中:
/etc/ 表示目录下的内容
/etc 表示目录+目录下的内容

④书写客户端定时备份的脚本
- 打包(tar)
- rsync传输
- 清理旧的备份(客户端保留7天,服务端保留30天等)
⑤写入到定时任务
1.6异地备份(容灾)
1)阿里云(ubt)部署rsync服务端并配置
- 参考上面部署服务端的配置即可。
- Ubuntu系统:
dpkg -l|grep rsync—>dpkg -L rsync - Ubuntu系统没有/etc/rsyncd.conf配置文件,需要手动创建并写入内容
- 不同系统systemctl配置文件(服务名不同):
- kylin:/usr/lib/systemd/system/rsyncd.service
- Ubuntu:/lib/systemd/system/rsync.service
- 其他没什么区别

2)配置客户端(backup服务器)定时同步
①测试
②故障与排查
- 出现错误:rsync: failed to connect to ubtfree.xueyaa.top (114.55.115.32): Connection refused (111)—和—rsync error: error in socket IO (code 10) at clientserver.c(128) [sender=3.1.3]
- 两头抓包查看
- 安全组和防火墙的问题—>放行backup服务器对应的宿主机(自己电脑)当前的公网ip(连接此公网的所有人都可访问此873端口);放行服务器当前的局域网ip,是什么就选什么(如果你的云服务器需要和同一云服务商、同一地域(或跨地域但通过内网互联服务)的其他云服务器通过内网传输rsync数据,就需要允许这些内网IP访问你的rsync服务端口)
- 遇到故障–>
journalctl -xe -u 服务名精准过滤去查看,找Startup字眼,逐步往下看,有详细报错原因 - eg:
permission denied(权限问题)could not open password file:No such file or directory(没有密码文件)
③脚本(把本地的备份同步到云服务器)
④写入到定时任务
[root@backup ~]# crontab -l
#1. sync time by cui at 20251016pm
*/3 * * * * /sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1 #之前的定时同步时间
#2.local_to_aliyun(本地到云服务器异地容灾备份)by cui at 20251017pm
00 01 * * * bash /server/scripts/local_to_aliyun.sh >/dev/null 2>&1
⚠️定时时间比前2台服务器(nfs01,m01)慢一点,由于数据量大,每日凌晨它俩还没发过来数据,backup服务器就要给云服务器发,会导致发成空数据,时间改为01点就可以了。
1.7rsync补充
1)rsync命令选项
| rsync命令的选项 | 说明 |
| -a | -rlptgoD-r 递归传输目录-l 软连接-p 保持权限-o 保持所有者-g 保持用户组-t 保持修改时间不变-D 特殊文件,特殊设备 |
| -v | 显示过程 |
| -z | 传输过程压缩,减少带宽占用 |
| -P | 显示传输时的速度 |
2)访问控制功能(白名单)
hosts allow = ip网段
#hosts allow = 172.16.1.0/24
#只准许哪些ip或网段访问,开了上面这个,10.0.0.0这个网段就不能访问了
#安全组: 请求还没到达服务器,拦截了 allow: 请求进入服务器了,被rsync规则拦截了
3)rsync命令
-avz选项--bwlimit与-z冲突
- –bwlimit=500(默认KB) –bwlimit=50M
- 含义:限制传输时候的速度,否则有多少带宽占用多少带宽。内网还行,公网容易占用掉用户的带宽。
--delete:⚠️极其危险。保证客户端与服务器的内容一模一样(服务端多余的内容会被删除),一般用于定时同步的场景。- eg:比如客户端传输了/mnt/这个空目录放服务端/data/下,加上此选项,服务端/data/下原有的数据也会被删除。
总结
- rsync守护进程(daemon)模式(服务端与客户端)
- 记录好全流程
- 记录故障(常用单词总结中)
- 项目–本地备份与异地容灾案例(跑通)