最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

CentOS7-实现全网备份脚本

来源:博客园


(资料图片仅供参考)

一、应用场景

备份公司的重要的文件或者日志文件,系统配置文件等

二、脚本思路

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

关键词: