(资料图)
一、应用场景
备份公司的重要的文件或者日志文件,系统配置文件等
二、脚本思路
1、本地打包备份2、同步服务推送至备份服务器3、同步成功发送邮件提醒管理员4、编写计划任务5、本地备份文件保留时间,服务器备份文件保留时间
三、项目实施
1、服端配置rsync服务
步骤一:安装rsync服务
[root@node01 ~]# yum install rsync.x86_64 -y
步骤二:修改配置文件
uid= rsyncgid= rsyncusechroot = nomaxconnections = 200timeout= 300pidfile = /var/run/rsyncd.pidlockfile = /var/run/rsync.locklogfile = /var/log/rsyncd.log[data]comment= It"s my test data!path= /data/ignoreerrorsreadonly = falselist= falsehostsallow = 192.168.11.0/24hostsdeny = 0.0.0.0/32authusers = rsync_backupsecretsfile = /etc/rsyncd.passwd
步骤三:准备用户授权
[root@node01 ~]# mkdir /data[root@node01 ~]# useradd rsync -s /sbin/nologin -M[root@node01 ~]# chown -R rsync.rsync /data/
步骤四:配置用于同步的密码文件
[root@node01 ~]# echo "rsync_backup:123456" >> /etc/rsyncd.passwd[root@node01 ~]# cat /etc/rsyncd.passwdrsync_backup:123456[root@node01 ~]# chmod 600 /etc/rsyncd.passwd[root@node01 ~]# ll /etc/rsyncd.passwd-rw------- 1 root root 20 Apr 8 18:30 /etc/rsyncd.passwd
步骤五:启动服务并设置为开机自启动
[root@node01 ~]# systemctl enable --now rsyncd
2、客户端配置rsync服务
步骤一:安装rsync服务
[root@node01 ~]# yum install rsync -y
步骤二:写入密码文件
[root@node02 ~]# echo "123456" >> /etc/rsyncd.passwd[root@node02 ~]# cat /etc/rsyncd.passwd123456[root@node02 ~]# chmod 600 /etc/rsyncd.passwd
3、编写脚本
示例代码:
[root@node01 ~]# cat web_bak.sh #!/bin/bash#define var# 取IP地址,这里用的VMware做的,网卡会和服务器网卡不一样IP=`ifconfig ens32 | awk -F "[ :]+" "NR==2 {print $3}"`# 接收当前系统时间Today=$(date +%F)# 定义备份路径Path=/backup/$IP# 配置文件 定时任务服务 开机自启动 防火墙iptablesCOFING_data="var/spool/cron/root etc/rc.local etc/sysconfig/iptablesServer/Scripts/"# web服务器数据WEB_data=var/www/html# 日志WEB_log=var/log/httpd# 备份后的名称BAK_CONFIG_NAME=config.$Today.tar.gzBAK_WEB_DATA_NAME=web_data.$Today.tar.gzBAK_WEB_LOG_NAME=web_log.$Today.tar.gz# 备份服务器地址BAK_Server=192.168.11.111Flag_file=flag.$Today.txt#backup[ -d $Path ] || mkdir -p $Pathcd / && \tar czf $Path/${BAK_CONFIG_NAME} ${COFING_data} && \tar czf $Path/${BAK_WEB_DATA_NAME} ${WEB_data} && \tar czf /$Path/${BAK_WEB_LOG_NAME} ${WEB_log}#check backup && make Flag_fileif [ $? == 0 ]thenfind $Path -type f -name "*$Today.tar.gz" | xargs md5sum >> $Path/${Flag_file}elseecho "backup Failure" >> $Path/${Flag_file}exit 1fi#to backup serverrsync -az /backup/ rsync_backup@${BAK_Server}::backup --passwordfile=/etc/rsyncd.passwd#del local backup file,Keep a week datafind $Path -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
4、服务器端检查邮件告警脚本在服务端完成
[root@node01 ~]# cat check_web.sh#!/bin/bash#define varToday=$(date +%F)Flag_file=/backup/192.168.11.111/flag.$Today.txtMail_file=/opt/mail_bak_${Today}.txt#check flagif [ ! -f ${Flag_file} ]then echo "backup is error,pls view back server" > ${Mail_file}else find /backup -type f -name "flag.$(date +%F)*" | xargs md5sum -c | grep FAILED > ${Mail_file}fi#check Mail_fileif [ -s ${Mail_file} ]then mail -s "$(date +%F-%T) back" admin_chan@163.com <${Mail_file}else echo "backup is success!"fi#del remote bak file,30 days keep datafind /backup -type f -name "*.tar.gz" -mtime +30 | xargs rm -f