上一篇 下一篇 分享链接 返回 返回顶部

跨网段服务器rsync定时同步运维实践

发布人: 发布时间:22小时前 阅读量:17

跨网段同步的运维背景

在IDC多机房或混合云环境中,服务器往往分布在不同的网段,业务系统需要定期将日志、备份文件或静态资源从生产服务器同步至灾备或分析服务器。相比FTP、HTTP等方式,rsync具备增量传输、断点续传、权限保留等优势,是跨网段文件同步的首选工具。

基础环境与规划

假设源服务器IP为192.168.10.10(网段A),目标服务器IP为172.16.20.20(网段B),两机网络可达且仅开放指定端口。建议使用专用同步账号,避免使用root直接运行rsync。

配置SSH密钥互信

rsync通过SSH传输时,为了支持定时任务免密执行,可使用密钥认证:

  1. 在源服务器生成密钥对:ssh-keygen -t rsa -b 2048,无需设置口令。
  2. 将公钥追加至目标服务器的~/.ssh/authorized_keys中。
  3. 测试连接:ssh sync_user@172.16.20.20,确认免密登录成功。

编写rsync同步命令

以同步/data/applogs目录为例,命令如下:

rsync -avz --progress --delete /data/applogs/ sync_user@172.16.20.20:/backup/applogs/
  • -a:归档模式,保留权限、属主、时间戳等。
  • -v:输出详细过程。
  • -z:传输时压缩,适合跨网段带宽有限场景。
  • --delete:删除目标端多余文件,保持两端严格一致(按需使用)。

注意源路径末尾的/,它代表同步目录内的内容,而非目录本身。若需排除某些子目录或文件,可添加--exclude参数。

配置crontab定时任务

在源服务器编辑/etc/crontab或使用crontab -e添加计划任务。例如每天凌晨2点执行同步:

0 2 * * * /usr/bin/rsync -avz --delete /data/applogs/ sync_user@172.16.20.20:/backup/applogs/ >> /var/log/rsync_sync.log 2>&1

建议将rsync绝对路径写入任务中,避免环境变量问题。同时输出日志便于排查。

跨网段传输的注意事项

端口与防火墙

默认SSH端口为22,建议在防火墙上仅允许源服务器IP访问目标服务器的指定端口,并将SSH监听端口改为非标准端口(如22022),在rsync命令中使用-e "ssh -p 22022"指定。

带宽与限速

若同步数据量大且不能影响业务,可使用--bwlimit参数限速,例如--bwlimit=5000表示限制为5000KB/s。

断点续传与校验

跨网段网络可能出现抖动,rsync默认支持断点续传,但若传输中断后未完成,可使用--partial保留部分传输的文件。数据完整性要求高时,可增加--checksum参数,但会增加计算开销。

使用rsync daemon模式

若无法直接使用SSH(如目标端只开放873端口),可配置rsync daemon。在目标服务器/etc/rsyncd.conf中定义模块,并设置hosts allow限制来源IP,然后使用rsync -avz --port=873 /data/applogs/ rsync://sync_user@172.16.20.20/backup_applogs/进行同步。

日志监控与异常处理

定时任务执行后,可通过以下方式确认同步结果:

  • 查看日志文件:检查rsync退出码,0表示成功,非0需排查。
  • 使用邮件或告警脚本:在crontab命令后追加|| echo "rsync failed" | mail -s "sync error" admin@example.com
  • 定期对比源与目标的文件数量及大小,防止漏同步。

总结

跨网段rsync定时同步的要点是:规划专用账号、配置SSH免密、编写正确的rsync参数、优化带宽与安全策略,并结合日志监控形成闭环。通过合理的crontab调度,可稳定实现多机房数据定期同步,降低人工干预成本。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com