一、为什么企业里一定要做全网备份

原始笔记从一个很典型的运维场景切入:领导一句“网站数据需要备份,你去做下”,后面其实是一整套需要你自己规划的体系。

真正落地时,至少要回答下面这些问题:

  • 备份什么内容
  • 如何做备份
  • 备份数据如何统一收集
  • 备份保留多久
  • 被备份的系统是什么版本、什么角色

这说明备份不是一条命令,而是一个完整项目。

二、备份项目里通常要备份什么

根据原始笔记,这类网站环境里常见的备份对象包括:

  • 用户数据
  • 数据库数据
  • 存储数据
  • 配置文件
  • 脚本和代码
  • 网站代码
  • 日志

其中配置文件、脚本和代码,是最常见也最适合先落地的基础备份内容。

三、备份项目的基础思路是什么

原始笔记给出的思路非常清晰:

3.1 如何备份

  • 打包压缩
  • 配合定时任务自动执行

3.2 如何统一收集

  • 通过 rsync 服务进行集中收集
  • rsync 客户端把备份数据推送到 rsync 服务端

所以这个项目的核心链路其实就是:

客户端生成备份 -> 打包压缩 -> 推送到备份服务器 -> 服务端统一保存

四、部署 Rsync 服务前先明确角色

在项目开始前,先要分清楚哪台是服务端,哪台是客户端。

从原始笔记里的示例可以看到:

  • 服务端:负责统一存放备份
  • 客户端:负责生成备份并推送

这和后面完整项目中的环境介绍是一致的,只是这里先从服务部署层面上手。

五、Rsync 服务端怎么部署

5.1 检查是否安装 rsync

rpm -qa | grep rsync

如果没有安装:

yum install -y rsync

5.2 配置 /etc/rsyncd.conf

原始笔记中的服务端配置如下:

fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 192.168.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password

[backup]
comment = zq created
path = /backup

这份配置里最值得先记住的是:

  • 服务用户:uid / gid
  • 认证用户:auth users = rsync_backup
  • 密码文件:/etc/rsync.password
  • 共享模块名:[backup]
  • 实际共享目录:/backup

5.3 检查进程和端口

部署后可以用下面两组命令检查:

ps -ef | grep rsync
ss -lntup | grep rsync

其中默认监听端口是:

  • 873

5.4 创建系统用户

useradd -s /sbin/nologin -M rsync

如果普通方式不行,也可以使用:

sudo useradd -s /sbin/nologin -M -r rsync

这个用户通常用于让 rsync 服务更安全地运行,而不是拿来登录系统。

5.5 创建密码文件

echo 'rsync_backup:111' > /etc/rsync.password
chmod 600 /etc/rsync.password

这里有两个重点:

  • 文件内容是 用户名:密码
  • 权限必须尽量严格,原始笔记中使用了 600

5.6 创建共享目录

mkdir /backup
chown -R rsync.rsync /backup/

服务端最终会把客户端推送来的备份统一放到这里。

5.7 启动并设置开机自启

systemctl start rsyncd && systemctl enable rsyncd

5.8 本地测试

rsync -av /etc/hostname rsync_backup@192.168.1.67::backup

推送成功后,可以在服务端查看:

ll /backup/

六、Rsync 客户端怎么测试推送

6.1 检查客户端是否安装

rpm -qa | grep rsync

没有安装时同样使用:

yum install -y rsync

6.2 基础推送测试

rsync -av /etc/hosts rsync_backup@192.168.1.67::backup

然后在服务端查看 /backup/,确认文件是否已经到达。

七、如何做客户端免密推送

原始笔记里的方式是给客户端单独准备一个密码文件:

echo '111' > /etc/rsync.client
chmod 600 /etc/rsync.client

然后执行:

rsync -avz /etc/passwd rsync_backup@192.168.1.67::backup --password-file=/etc/rsync.client

这样客户端在推送时就不需要交互输入密码了,更适合脚本和定时任务。

八、部署 Rsync 服务时最容易先记住的重点

如果把这一部分压缩成一张最小清单,建议优先记住:

  • 安装 rsync
  • 配置 /etc/rsyncd.conf
  • 创建 rsync 运行用户
  • 创建 /etc/rsync.password
  • 创建 /backup 共享目录
  • 启动 rsyncd
  • 在客户端使用 --password-file 做免密推送

九、小结

全网备份项目的第一步,不是直接写脚本,而是先把数据收集通道搭好。

这里的核心就是:

  • 服务端要提供统一备份入口
  • 客户端要能稳定地把数据推过去
  • 最好支持非交互式认证,方便后续接入脚本和定时任务

把 Rsync 服务端和客户端这条链路打通之后,后面再接自动化备份脚本和定时任务,就顺理成章了。