一、为什么企业里一定要做全网备份¶
原始笔记从一个很典型的运维场景切入:领导一句“网站数据需要备份,你去做下”,后面其实是一整套需要你自己规划的体系。
真正落地时,至少要回答下面这些问题:
- 备份什么内容
- 如何做备份
- 备份数据如何统一收集
- 备份保留多久
- 被备份的系统是什么版本、什么角色
这说明备份不是一条命令,而是一个完整项目。
二、备份项目里通常要备份什么¶
根据原始笔记,这类网站环境里常见的备份对象包括:
- 用户数据
- 数据库数据
- 存储数据
- 配置文件
- 脚本和代码
- 网站代码
- 日志
其中配置文件、脚本和代码,是最常见也最适合先落地的基础备份内容。
三、备份项目的基础思路是什么¶
原始笔记给出的思路非常清晰:
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 服务端和客户端这条链路打通之后,后面再接自动化备份脚本和定时任务,就顺理成章了。