利用shell脚本调用ansible自动化实现企业备份基本环境

摘要:
inotify+rsync实时监控推送NFS挂载目录脚本#!/bin/bashname=192.168.200.139inotifywait-mq--format'%f'-ecreate,close_write/usr/local/mysql/data|whilereadlinedocd/usr/local/mysql/dataif[-f$line];thenmv$line/wbq/"$name"_"$line"_`date+%F-%H-%M-%w`#移动改名,因为检查脚本是根据抓IP进行比对MD5sum校验文件个数的cd/wbq&&/usr/bin/md5sum"$name"_"$line"_`date+%F-%H-%M-%w`˃˃md5sum_"$name".txt#生成校验文件rsync-az/wbq--deletersync_mysql@192.168.200.129::mysql--password-file=/etc/rsync.password#推送/data这个目˃录到备份服务器的mysql目录里fidonemysql服务器全备脚本#!-name"mysql_all_*-1"-typef-mtime+30|xargsrm-fcd/usr/local/mysql/datarm-fmysql-bin.0*web服务器自动打包系统重要文件脚本#!-ne0];thentest-d/etc/sysconfig||echo"没有iptables这个配置文件!-ne0];thenexit1elseecho"已成功推送"˃˃/root/729fi备份服务器检查完整性脚本#!-eq0];thenecho"系统重要备份文件推送文件完整。完美~"find$path-typef-name"md5sum*"|xargsrm-felseecho"推送文件不完整!

QQ截图20180722000600.png-68.1kB

inotify+rsync实时监控推送NFS挂载目录脚本

#!/bin/bash

Path=/data

/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | whileread line
do
        if [ -f $line ];then
                rsync -azP $line --delete rsync_nfs@192.168.200.129::nfs --password-file=/etc/rsync.password
        elsecd $Path
                rsync -azP ./ --delete rsync_nfs@192.168.200.129::nfs --password-file=/etc/rsync.password
fi
done

mysql服务器增备脚本

#!/bin/bash
name=192.168.200.139inotifywait -mq --format '%f' -e create,close_write /usr/local/mysql/data | whileread line
docd /usr/local/mysql/data
if [ -f $line ];then
        mv $line /wbq/"$name"_"$line"_`date +%F-%H-%M-%w` #移动改名,因为检查脚本是根据抓IP进行比对MD5sum校验文件个数的
        cd /wbq && /usr/bin/md5sum "$name"_"$line"_`date +%F-%H-%M-%w` >> md5sum_"$name".txt  #生成校验文件
        rsync -az /wbq --delete rsync_mysql@192.168.200.129::mysql --password-file=/etc/rsync.password  #推送/data这个目>录到备份服务器的mysql目录里
fi
done

mysql服务器全备脚本

#!/bin/bash
name=192.168.200.127lujing="/mysql/mysql_all_$(date +%F-%w).sql"

/usr/local/bin/mysqldump -uroot -p666666 --all-databases >$lujing
cd /mysql
/usr/bin/md5sum $lujing >md5sum.txt
/usr/bin/rsync -az /mysql/*rsync_mysql@192.168.200.129::mysql --password-file=/etc/rsync.password
find /mysql/ ! -name "mysql_all_*-1" -type f -mtime +30  | xargs rm -f
cd /usr/local/mysql/data
rm -f mysql-bin.0*

web服务器自动打包系统重要文件脚本

#!/bin/bash
name=192.168.200.128
cd /var/spool/cron && tar jcf /bak/root_"$name"_`date +%F-%H-%M-%w`.tar.bz2 root
if [ $? -ne 0];then
        test -d  /var/spool/cron || echo "没有cron这个目录!" >> /root/729fi

cd /var/html && tar jcf /bak/www_"$name"_`date +%F-%H-%M-%w`.tar.bz2 www
if [ $? -ne 0];then
        test -d  /var/html/www || echo "没有www这个目录!" >> /root/729fi

cd /app && tar jcf /bak/logs_"$name"_`date +%F-%H-%M-%w`.tar.bz2 logs
if [ $? -ne 0];then
        test -d  /app || echo "没有app这个目录!">> /root/729fi


cd /etc && tar jcf /bak/rc.local_"$name"_`date +%F-%H-%M-%w`.tar.bz2 rc.local
if [ $? -ne 0];then
        test -d /etc || echo "找不到etc这个目录!">> /root/729fi


cd /etc/sysconfig && /bin/tar jcf /bak/iptables_"$name"_`date +%F-%H-%M-%w`.tar.bz2 iptables
if [ $? -ne 0];then
        test -d /etc/sysconfig || echo "没有iptables这个配置文件!">> /root/729fi

#删除7天外的数据
find /bak -type f -mtime +7 | xargs rm -f

cd / && tar jcf /backup/"$name"_`date +%F-%H-%M-%w`.tar.bz2 bak

#对那个目录下所有文件进行校验 然后 重定向到 md5sum文件里,作服务端比对用
cd /backup && /usr/bin/md5sum "$name"_`date +%F-%H-%M-%w`.tar.bz2 > md5sum_"$name".txt

rsync -az /backup rsync_backup@192.168.200.129::backup --password-file=/etc/rsync.password
if [ $? -ne 0];then
        exit 1
elseecho "已成功推送" >> /root/729fi

备份服务器检查完整性脚本

#!/bin/bash

function xxx() {

#系统重要文件检查脚本
path=/backup
path1=/backup/backup
clients=`find "$path1" -type f -name "192.168.200*" | awk -F "[/_]" '{h[$4]++}END{for(i in h)print i}' | wc -l`
cmd=`find $path -type f -name "md5sum*"`

#找到 根目录里backup下的md5sum打头的校验文件和客户端数量进行比对
#然后我md5sum -c 对文件进行校验 并反回码
if [ `find $path -type f -name "md5sum*" | wc -l` ==$clients ];then
        cd $path1
        /usr/bin/md5sum -c $cmd
                if [ $? -eq 0];then
                        echo "系统重要备份文件推送文件完整。完美~"find $path -type f -name "md5sum*" | xargs rm -f
                elseecho "推送文件不完整!"fi
else
        returnfi
}

function yyy(){
#增备检查脚本
mulu=/mysql
mulu1=/mysql/wbq/shuliang=`find "$mulu1" -type f -name "192.168.200*" | awk -F "[/_]" '{h[$4]++}END{for(i in h)print i}' | wc -l`
cmd1=`find $mulu1 -type f -name "md5sum*"`
if [ `find $mulu1 -type f -name "md5sum*" | wc -l` ==$shuliang ];then
        cd $mulu1
        /usr/bin/md5sum -c $cmd1
                if [ $? -eq 0];then
                        echo "增备推送文件完整。完美~"find $mulu1 -type f -name "md5sum*" | xargs rm -f
                elseecho "推送文件不完整!"fi
fi
}

function zzz(){

#全备检查脚本
mulu=/mysql
cd $mulu
/usr/bin/md5sum -c md5sum.txt
        if [ $? -eq 0];then
                echo "全备推送文件完整。完美~"rm -f md5sum.txt
        elseecho "推送文件不完整!"fi
}
cd /backup/backup
test -f md5sum*
if [ $? -eq 0];then
        xxx
elseecho "没有新的数据更新"fi
cd /mysql/wbq
test -f md5sum*
if [ $? -eq 0];then
        yyy
elseecho "没有新的数据更新"fi
cd /mysql
test -f md5sum*
if [ $? -eq 0];then
        zzz
elseecho "没有新的数据更新"fi


#因为是0点, 所以排除周二的周一的打包文件是周日的数据
find $path ! -name "*-1.tar.gz" -type f -mtime +180 | xargs rm -f
find $mulu ! -name "*-1.tar.gz" -type f -mtime +180 | xargs rm -f

免责声明:文章转载自《利用shell脚本调用ansible自动化实现企业备份基本环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android系统--输入系统(十一)Reader线程_简单处理稳定性测试浅谈下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL Workbench 如何连接 Amazon EC2 上的MySQL服务器?

最近在使用Amazon EC2 上的Ubuntu Linux. 为了方便管理MySQL, 使用一个图形界面的MySQL客户端总是可以提高效率的。不过如何连接EC2中的机器还是有点要注意的地方。 Connection Methond: 注意,这里一定要选择”Standard TCP/IP over SSH” SSH Hostname:  EC2 机器的名字...

安装mysql

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 一、Window版本 1、下载 1 MyS...

Elasticsearch证书过期更新

elasticsearch证书过期更新。 1.查看ES证书状态 curl -XGET -u admin:passwd 'http://IP:9200/_license' { "license" : { "status" : "expired", "uid" : "ffe075ec-b906-450f-a614-e308310a032c"...

PLsql/Oracle数据库中没有scott账户,如何创建并解锁

当然首先要装好Oracle 11g 然后还要有sqlplus,这个在Oracle11g的时候应该都会配上的 进入正题,如果oracle/plsql没scott账户,如何创建 先找到Oracle安装目录下的soctt.sql 我的是在: E:app91959product11.2.0dbhome_1admin 如果没有soctt.sql,先建立一个txt文件...

Shell常用命令之free

前言 free查看当前系统的内存及交换分区使用情况。(写这篇文档是因为一次面试中,面试官问道buff cache你了解吗? 两个月不碰系统突然有些懵。。。你了解什么叫buff/cache吗?) 语法格式 free [options] 选项 -b:以Byte为单位显示内存使用情况 -k:以KB为单位显示内存使用情况 -m:以MB为单位显示内存使用情况 -g:...

Spring 实现数据隔离

需求 用户数据要同时支持在mysql和redis进行管理、存储。 思路 利用spring的注解,在配置中指定存储类型,启动时识别并选择对应的实现类。 代码 1. 用户管理的接口类 public interfaceIUserManager { booleancreateUser(User user); booleanremoveUser(); ....