1.项目准备
CentOS7 3台服务器主机web01、backup、nfs01
主机规划
web01服务器 外网 192.168.232.7/24 内网 172.16.1.7/24
NFS存储服务器 外网 192.168.232.31/24 内网 172.16.1.31/24
backup备份服务器 外网 192.168.232.41/24 内网 172.16.1.31/24
2.克隆生成服务器
1)更改主机名称
hostnamectl set-hostname 服务器名称
2)修改网卡配置信息(我的网卡配置文件名称ens32,ens34)
NAT网段(我的模板机IP:192.168.232.200)
sed -i 's#200#7#g' /etc/sysconfig/network-script/ifcfg-ens32
sed -i '/UUID/d' /etc/sysconfig/network-script/ifcfg-ens32
LAN网段
sed -i 's#200#7#g' /etc/sysconfig/network-script/ifcfg-ens34
sed -i '/UUID/d' /etc/sysconfig/network-script/ifcfg-ens34
重启网络服务重新远程连接
systemctl restart network
其他克隆的服务器与上面操作类同
3.项目需求
每天晚上 00 点整在 Web 服务器上打包备份系统配置文件、
网站程序目录及访问日志并通过 rsync 命令推送备份服务器 backup 上备份保留
(备份思路可以是先在本地按日期打包,然后再推到备份服务器 backup 上) ,
NFS 存储服务器同 Web 服务器,实际工作 中就是全部的服务器
4.项目分析
1.服务端
备份服务器
1)搭建部署rsync守护进程
2)检验数据的完整性 md5sum -c finger.txt
3)删除180以前的数据保存周一的数据
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" | xargs rm 2>/dev/null
3)配置163邮箱
2.客户端
web01服务器
1)创建一个备份目录与服务端备份目录保持一致 /backup
2)在备份目录下创建一个有本机标识的目录 /backup/172.16.1.7
3)压缩打包web01服务器上的重要的系统数据和开发的网站数据(没有的假设已经创建)
/var/spool/cron/root,/etc/hosts,/etc/rc.local,/etc/sysconfig/iptables
/var/html/www,/app/logs
4)将保存在本机的7天以前的备份数据删除 节省磁盘空间
find /backup/ -type f -mtime +7 | xargs rm 2>dev/null
5)将当天的打包好的数据生成指纹 保存到finger.txt文件中(利用md5sum生成指纹)
6)将备份数据推送到备份服务器
7)编写脚本
8)编写定时任务
NFS存储服务器
1)创建一个备份目录与服务端备份目录保持一致 /backup
2)在备份目录下创建一个有本机标识的目录 /backup/172.16.1.31
3)压缩打包NFS服务器上的重要的系统数据(没有的假设已经创建)
/var/spool/cron/root,/etc/hosts,/etc/rc.local,/etc/sysconfig/iptables
4)将保存在本机的7天以前的备份数据删除 节省磁盘空间
5)将当天的打包好的数据生成指纹 保存到finger.txt文件中
6)将备份数据推送到备份服务器
7)编写脚本
8)编写定时任务
5.部署服务器
1.服务端 backup备份服务器
1)下载安装rsync yum install -y rsync
2) 编写配置文件
vim /etc/rsyncd.conf
# rsyncd.conf start
# 指定管理备份目录的用户
uid = rsync
# 指定管理备份目录的用户组
gid = rsync
# 定义rsync备份服务的网络端口号
port= 873
# 伪装称为超级用户 root
fake super = yes
user chroot = no
#定义最大连接数 同时只能有200个客户端连接到备份服务器
max connections = 200
#设置 超时时间(单位秒)
timeout = 300
# 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行
pid file = /var/run/rsyncd.pid
# 锁文件 控制最大连接数
lock file = /var/run/rsync.lock
# rsync服务的日志文件
log file = /var/log/rsync.log
# 忽略传输中的简单错误
ignore errors
# 指定备份目录是可读可写
read only = false
# 使客户端可以查看服务端的模块信息
list = false
# 允许传输备份数据的主机(白名单)
hosts allow = 172.16.1.0/24
# 禁止传输备份数据的主机(黑名单)
hosts deny = 0.0.0.0/32
# 指定认证用户
auth users = rsync_backup
# 指定认证用户密码文件 用户名称:密码信息
secrets file = /etc/rsync.password
# 模块信息
[backup]
comment = "backup dir by oldboy"
# 模块中配置参数 指定备份目录
path = /backup
3)创建rsync服务的虚拟用户
useradd rsync -M -s /sbin/nologin
4)创建备份服务认证密码文件
echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
5)创建备份目录并修改属主属组信息
mkdir /backup
chown rsync.rsync /backup/
6)启动备份服务
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd
2.客户端 web01、nfs01服务器
echo "rsync_backup:密码信息" >/etc/rsync.password
chmod 600 /etc/rsync.password
6.163企业邮箱配置
1.网易邮箱配置
2.linux服务器配置
vim /etc/mail.rc
set from=邮箱账号 smtp=smtp.163.com
set smtp-auth-user=邮箱账号 smtp-auth- password=授权码 smtp-auth=login
7.脚本编写
1.backup 备份服务器 /server/scripts/rsync_backup.sh
2.web01服务器 /server/scripts/web_backup
3.nfs服务器 /server/scripts/nfs_backup.sh
8.定时任务编写
backup备份服务器定时任务
crontab -e
0 0 * * * /bin/sh /server/scripts/rsync_backup.sh &> /dev/null
其他服务器定时任务编写类似