1、构建环境:
主机名 IP
rsync 192.168.1.170
web01 192.168.1.171
web02 192.168.1.172
2、项目需求
1)所有服务器的备份目录必须都为/backup
2)所有服务器的脚本目录必须都为/server/scripts
3)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
4)备份服务器上,保留每周一的校验结果文件,其它要保留6个月的数据副本。
5)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照主机、ip、时间名字保存。
6)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
1、scripts服务端的配置
[root@localhost ~]# hostnamectl set-hostname rsync
[root@localhost ~]# bash
[root@rsync ~]# mkdir -p /server/scripts
[root@rsync ~]# cd /server/scripts
[root@rsync scripts]# vim rsync_install.sh
#!/bin/bash
#1、安装软件包
yum install -y rsync &> /dev/null
#2、创建用户
useradd -M -s /sbin/nologin rsync
#3、创建备份目录
mkdir -p /backup
chown -R rsync.rsync /backup
#4、修改配置文件
cat >/etc/rsyncd.conf<<EOF
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
[backup]
comment = welcome to nfzlback
path = /backup
EOF
#5、创建认证文件
echo 'rsync_backup:passwd' > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
#6、启动服务
systemctl start rsyncd &> /dev/null
systemctl enable rsyncd &> /dev/null
systemctl status rsyncd &> /dev/null
echo "rsync start success"
scripts客户端的配置
[root@web01 ~]# mkdir -p /server/scripts
[root@web01 ~]# vim /server/scripts/rsync_backup.sh
#!/bin/bash
#1、安装软件包
yum install -y rsync
#2、定义变量
Host=$(hostname)
Ip=$(ifconfig ens33 | awk 'NR==2{print $2}')
Date=$(date +%F)
BackupDir=/backup
Dest=${BackupDir}/${Host}_${Ip}_${Date}
#3、创建备份目录
mkdir -p $Dest
#4、收集需要备份的文件
#Sysconfig backup
tar -czvf $Dest/sysconf.tar.gz /etc/fstab /etc/hosts
#Log backup
tar -czvf $Dest/log.tar.gz /var/log/messages /var/log/secure
#5、校验
md5sum $Dest/* >$Dest/backup_check_$Date
#6、将备份目录推动到rsync服务端
Rsync_Ip=192.168.1.170
Rsync_user=rsync_backup
Rsync_Module=backup
export RSYNC_PASSWORD=passwd
rsync -avz $Dest $Rsync_user@$Rsync_Ip::$Rsync_Module
#7、删除7天备份目录
find $BackupDir -type d -mtime +7 | xargs rm -rf
邮件通知管理员
yum install -y mailx -y
vim /etc/mail.rc #最后一行插入
set from=373370405@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=373370405@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
\\校验数据并发送邮件给管理员
[root@rsync ~]# vim /server/scripts/check_backup.sh
#!/bin/bash
#1、定义变量
Path=/backup
Date=$(date +%F)
#2、查看flag文件,并对对文件进行校验,然后将校验的结果保存至result_时间
find $Path/*_${Date} -type f -name "backup_check*"|xargs md5sum -c >$Path/result_${Date}
#3、将校验结果发送邮件给管理员
mail -s "Rsync Backup log" 373370405@qq.com <$Path/result_${Date}
#4、删除超过7天的校验结果文件,删除超过180天的备份数据文件
find $Patj -type f -name "result*" -mtime +7 | xargs rm -rf
find $Patj -type f -mtime +180 | xargs rm -rf
写计划任务
00 01 * * * /bin/bash /server/scripts/rsync_back.sh &> /dev/null