利用shell脚本实现企业备份基本环境

在这里插入图片描述

要求是利用ansible远程启动本地脚本来实现。因此,模拟五台。
利用ansible主机 分发四个脚本给不同的服务器。

在备份服务器上配置rsync文件。增加系统重要文件模块和mysql模块还有nfs模块

uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[backup]  #系统重要文件打包备份的模块 根据这个路径打包
path = /backup/
ignore errors
read only = false
lise = false
hosts allow = 192.168.200.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[mysql]      mysql数据库的备份模块 
path = /mysql/
ignore errors
read only = false
lise = false
hosts allow = 192.168.200.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_mysql
secrets file = /etc/rsync.password

[nfs]   nfs服务器的备份模块
path = /nfs/
ignore errors
read only = false
lise = false
hosts allow = 192.168.200.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_nfs
secrets file = /etc/rsync.password

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

nfs服务器inotify+rsync实时监控

#!/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
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   #由于是每天0点进行备份 所以就是周一的0点也就是周日的数据 排除周日的数据  其余仅保存30天本地全备数据
cd /usr/local/mysql/data
rm -f mysql-bin.0*     #进行全备之后  把二进制日志就可以清空了,因为用不上了。

增量备份脚本

#!/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

系统重要文件,全备,增备。检查完整性脚本 (给备份服务器推的)

#!/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/data
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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序名称:备份还原系统工具v2.0 (GhostShellv2.0)<br>程序开发:篮球梦音乐心 (c) 维修技术联盟<br>程序大小:3.06 MB<br>应用平台:WinNT Win2000 WinXP Win2003<br><br>一、程序简介:<br><br> 备份还原系统工具(GhostShell)是能在 Windows 下对任意分区一键备份或恢复(以 Ghost11.exe 为核心)的应用程序。<br>支持多硬盘、混合硬盘(IDE/SATA/SCSI)、混合分区(FAT32/NTFS)、未指派盘符分区、盘符错乱分区。支持多系统,支持<br>支持鼠标拖拽,支持各种存储设备检测,自动判断中文名或中文目录,自动修正后辍名,自动判断文件是否文件,自动辨别<br>路径错误,自动选择控件;本程序有自动具有自动记忆功能,当你运行一次备份之后,将会自动生成记录,在下一次打开程序<br>时,自动写入此程序,让你更快速进行还原。<br><br>二、特点详解:<br><br>1、默认核心是 Ghost 11,自动以最高压缩进行备份,减少镜像体积<br><br>2、程序默认对当前系统所在分区进行备份/还原操作,可选择其他分区<br><br>3、选择“备份系统”时,所创建的文件会自动进行隐藏并自动记录,防止<br> 被误删,在下一次运行此程序时,会自动填入路径地址,即可快速进行还原<br><br>4、无论是“备份系统”还是“还原系统”,都可以自动判断分区和路径地址是否<br> 有效可用,自动修正后辍名<br> (比如,你可需要打D:\backup,按上确定之后会自动补充为D:\bakcup.gho,并判断文件是否存在)<br><br>5、还原时可忽略 Ghost 镜像文件 CRC 校验<br><br>6、支持网络Ghost系统进行安装,准备好系统镜像,选择“还原系统”,再按“确定”即可自动重启进行安装<br><br>以下为更新功能:<br><br>7、启动时自动检查历史操作进行选择控件<br><br>8、支持鼠标拖拽,直接把 Ghost 文件拖到程序窗口即可自动输入地址,方便快捷<br><br>9、选择“备份系统”即可全自动在系统启动项添加“还原系统”功能,并支持设置启动停留时间<br><br>10、支持存储设备检测,不管您是光驱,还是闪存盘,还是移动硬盘,轻轻一按,即可自动复制到磁盘进行恢复,安全可靠<br><br>11、支持旧版本功能升级,如果您以使用旧版本对系统进行备份,运行此程序时将自动提示更新您的系统添加“还原系统”功能<br><br>12、由于 Ghost 是DOS下的应用程序,不支持中文名或中文目录,本软件软件可以自动检测你选择你文件是否为中文名或者存放在中文目录<br><br>13、添加操作提示,即使您已经选择了备份或者还原功能,如果你想修改系统或者系统在未进行备份之前就出现问题,只需选择<br> “撤消备份/还原”即可自动检测并还原所有操作。<br><br><br>三、使用说明:<br><br> 运行程序后选择需要备份/还原系统后按“确定”即可,程序会自动重启计算机进入 DOS 进行备份/还原,完成后自动重新进入系统。<br><br>四、注意事项:<br><br>本程序不支持硬盘存在 Linux 分区并且该分区穿插在其他分区中;若该分区在硬盘最后则不会影响本程序使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值