环境:
角色 | IP | 主机名 |
Web | 10.0.0.7 | web01 (客户端) |
Nfs | 10.0.0.31 | nfs (客户端) |
Rsync | 10.0.0.41 | backup (服务端) |
客户端要求:
1.客户端每天凌晨01点在本地打包备份(系统配置文件、日志文件、其他目录、应用配置等文件)
2.客户端备份的数据必须存放至以主机名IP地址当前时间命名的目录中, 例"/backup/nfs_10.0.0.31_2018-09-26"
3.客户端最后通过rsync
推送本地已打包好的备份文件至backup
服务器
4.客户端本地保留最近7天的数据, 避免浪费磁盘空间
服务端要求:
1.服务端部署Rsync,用于接受客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过里的数据是否完整
3.服务端需要每天检验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
实施步骤:
客户端:
# vim rsync_backup.sh
#!/bin/bash
export RSYNC_PASSWORD=1
#定义变量
host=$(hostname)
ip=$(ifconfig eth0 | awk 'NR==2{print $2}')
date=$(date +%F)
dir=/backup
bak_mod=backup
bak_user=rsync_user
bak_sev=10.0.0.41
bak_name=${host}_${ip}_${date}
bak_dir=/backup/${bak_name}
sysconf_file="/etc/passwd /etc/shadow /etc/hosts /etc/fstab /etc/sysconfig/network-scripts/ifcfg-* /boot/grub2/grub.cfg"
appconf_file="/etc/yum.conf"
log_bak="/var/log"
dir_bak="/var/spool/cron /etc/firewalld"
rsync_opt="-avz"
#1.创建备份目录
mkdir -p $bak_dir
#2.复制备份文件至备份目录
#sysconf_bak
\cp -rp $sysconf_file $bak_dir
#appconf_bak
\cp -rp $appconf_file $bak_dir
#log_bak
\cp -rp $log_bak $bak_dir
#dir_bak
\cp -rp $dir_bak $bak_dir
#3.压缩归档备份目录
cd $dir
tar czf ${bak_name}.tar.gz ${bak_name}
#4.对归档文件校验
md5sum ${bak_name}.tar.gz >${bak_name}_md5check
#5.上传归档文件至backup服务器
rsync $rsync_opt $dir/${bak_name}{.tar.gz,_md5check} ${bak_user}@${bak_sev}::${bak_mod}
#6.保留7天内的文件
find $dir -mtime +7 -delete
服务端:
一.部署reync独立服务
1.安装软件包
yum install -y rsync
2.修改rsyncd的配置文件/etc/rsyncd.conf
vim /etc/rsyncd.conf
##默认是nobody
uid = rsync
##默认是nobody
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_user
##指定认证文件,格式username:password
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
#####################################
##备份模块名
[backup]
##描述信息
comment = welcome to softeem backup!
##真实路径
path = /backup
3.根据配置文件创建所需环境
1)创建程序用户
useradd -u 900 -M -s /sbin/nologin rsync
2)创建备份目录,并修改所属
mkdir -p /backup
chown -R rsync.rsync /backup
3)创建自定义认证文件
echo "rsync_user:1" >/etc/rsync.password
chmod 600 /etc/rsync.password
4.启动服务
systemctl start rsyncd
systemctl enable rsyncd
二、开启邮件代理转发
1)安装软件包
yum install -y mailx
2)修改mailx的配置文件
cat >> /etc/mail.rc <<EOF
set from=1906306671@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1906306671@qq.com
set smtp-auth-password=yxuoravffblefacd
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF
3.写脚本自动校验客户端上传的备份文件
vim rsync_check.sh
#!/bin/bash
#定义变量
dir=/backup
date=$(date +%F)
cd $dir
#校验,并将结果发送到邮箱
find -name "*${date}_md5check" |xargs md5sum -c | mail -s "$date_备份结果" 1906306671@qq.com &> /dev/null
#查过半年的文件删除
find $dir -mtime +180 -delete
实验结果:
在服务端验证:
收到邮件: