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


    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 | while read line
    do
            if [ -f $line ];then
                    rsync -azP $line --delete rsync_nfs@192.168.200.129::nfs --password-file=/etc/rsync.password
            else
                    cd $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.139
    inotifywait -mq --format '%f' -e create,close_write /usr/local/mysql/data | while read line
    do
            cd /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.127
    lujing="/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/729
    fi
    
    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/729
    fi
    
    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/729
    fi
    
    
    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/729
    fi
    
    
    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/729
    fi
    
    #删除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
    else
            echo "已成功推送" >> /root/729
    fi

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

    #!/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
                    else
                            echo "推送文件不完整!"
                    fi
    else
            return
    fi
    }
    
    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
                    else
                            echo "推送文件不完整!"
                    fi
    fi
    }
    
    function zzz(){
    
    #全备检查脚本
    mulu=/mysql
    cd $mulu
    /usr/bin/md5sum -c md5sum.txt
            if [ $? -eq 0 ];then
                    echo "全备推送文件完整。完美~"
                    rm -f md5sum.txt
            else
                    echo "推送文件不完整!"
            fi
    }
    cd /backup/backup
    test -f md5sum*
    if [ $? -eq 0 ];then
            xxx
    else
            echo "没有新的数据更新" 
    fi
    cd /mysql/wbq
    test -f md5sum*
    if [ $? -eq 0 ];then
            yyy
    else
            echo "没有新的数据更新"
    fi
    cd /mysql
    test -f md5sum*
    if [ $? -eq 0 ];then
            zzz
    else
            echo "没有新的数据更新"
    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
  • 相关阅读:
    【Framework】HTTP运行期与页面执行模型
    【Framework】深入研究Asp.net页面的生命周期
    【WCF】Silverlight+wcf+自定义用户名密码验证
    【缓存】EF4ProviderWrappers
    【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
    【缓存】利用Cache防止同一帐号重复登录
    【缓存】.net中Cache管理操作
    【缓存】系统缓存全解析 (上)
    【缓存】系统缓存全解析 (中)
    【缓存】系统缓存全解析 (下)
  • 原文地址:https://www.cnblogs.com/heroke/p/10014944.html
Copyright © 2020-2023  润新知