服务器异地多副本自动备份:零基础rsync教程

服务器数据丢失是运维中最不想遇到的事,而异地多副本自动备份就是最有效的防线之一。
本文手把手教你在两台或多台 Linux 服务器之间,用 rsync 和 cron 实现每天自动同步,并保留多个历史版本(副本),即使本地硬盘损坏或误删,也能快速恢复。

前置条件:你需要哪些东西

  • 至少两台 Linux 服务器(服务器 A 作为数据源,服务器 B、C 等作为异地备份机),建议公网 IP 互通或内网互通。
  • 每台服务器都有 root 或 sudo 权限。
  • 知道要备份的目录路径(比如 /var/www/html/data)。
  • 备份机有足够的磁盘空间。

如果条件有限,可以用一台云服务器 + 一台本地树莓派或 NAS 模拟异地环境。

步骤详解:配置 SSH 免密登录

rsync 通过 SSH 传输,为了避免每次输入密码,需配置免密登录(从源服务器登录到备份服务器)。

  1. 源服务器上执行 ssh-keygen -t rsa -b 4096,一路回车生成密钥(已有密钥可跳过)。
  2. 将公钥复制到备份服务器:ssh-copy-id root@备份服务器IP。输入一次备份机密码。
  3. 测试:ssh root@备份服务器IP 无需密码即可登录。
如果使用非 root 用户,确保该用户对备份目录有写权限。

步骤详解:编写 rsync 备份脚本(含多副本)

为了实现多副本(按日期保留多份),我们不用覆盖式同步,而是每次将源目录完整同步到一个以日期命名的子目录下。

在源服务器上创建脚本 /root/backup.sh

#!/bin/bash
# 定义变量
SRC="/var/www/html/"               # 源目录,末尾斜杠很重要
DEST_BASE="/backups/web/"          # 备份机上的基础备份目录
DATE=$(date +%Y-%m-%d_%H%M%S)       # 精确到分钟,避免重名
BACKUP_HOST="root@备份服务器IP"
# 创建本次备份目录(在备份机上)
ssh $BACKUP_HOST "mkdir -p ${DEST_BASE}${DATE}"
# 执行同步
rsync -avz --delete $SRC ${BACKUP_HOST}:${DEST_BASE}${DATE}/
# 保留最近 30 天副本,删除更旧的目录
ssh $BACKUP_HOST "find ${DEST_BASE} -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;"

关键点解释:

  • --delete:删除源中已不存在的文件,保持和目标一致。
  • -avz:归档模式 + 压缩传输。
  • 最后一行用 find 删除 30 天前的目录,自动管理磁盘空间。

要将数据同时备份到第二个异地服务器,只需在尾部增加一段类似的命令,修改 BACKUP_HOST 和备份目录即可。

赋予执行权限:chmod +x /root/backup.sh

步骤详解:配置定时任务实现自动备份

使用 cron 定时执行脚本。
执行 crontab -e,添加一行:

0 2 * * * /root/backup.sh > /dev/null 2>&1

含义:每天凌晨 2 点执行一次。
日志直接丢弃(如果担心出错,可以写文件如 /var/log/backup.log)。
重启 cron:systemctl reload cronservice cron restart

如果也想备份到不同时间点(如每天两次),可多添加行,但要确保脚本中日期时间精确到小时、分钟,避免同名覆盖。

避坑提醒与验证方法

常见踩坑点

  • 磁盘占满:多副本会占用大量空间,务必设置保留天数(本例 30 天),并监控磁盘使用率。
  • SSH 连接断掉:如果备份机公网 IP 不稳定,脚本可能卡住。建议在 rsync 命令后加上 --timeout=60 限制超时。
  • 权限不足:备份目录的所有者必须与 SSH 用户一致。
  • 软链接或特殊文件:rsync 默认保留软链接,如需特殊处理可加 -H 用于硬链接。

手动验证

  1. 执行 bash /root/backup.sh,观察输出有无报错。
  2. SSH 到备份机,查看目录结构:ls -l /backups/web/ 应出现类似 2025-03-01_020000 的文件夹。
  3. 检查文件完整性:diff -r /var/www/html /backups/web/2025-03-01_020000/ 应无差异。
  4. 确认 cron 已生效:crontab -l 查看是否包含该任务。

常见问题解答

Q:为什么我同步后备份机目录为空?
A:检查源路径末尾是否加 /,以及 SSH 免密是否成功。可以先用 rsync -avz --dry-run 测试看输出。

Q:能否备份到 Windows 或云存储?
A:本文方案针对 Linux 对 Linux。如需备份到对象存储(OSS、S3),推荐 rclone,但多副本管理逻辑类似。

Q:脚本中 find -delete 直接删除会不会误删?
A:-mtime +30 只匹配 30 天前修改的目录,且不递归删除子文件,较安全。建议首次手工留一份快照。

如果你正在处理服务器异地多副本自动备份,建议先按本文步骤完整执行,再根据自己的环境微调路径、保留天数和目标IP;
遇到异常时优先回看避坑和高频问题部分,基本能快速排错。

分享到:
上一篇
服务器带宽跑满溯源异常流量:服务器带宽跑满怎么查?一步步定位
下一篇
服务器IPMI远程管理住宅主机:住宅服务器IPMI远程管理
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意