美文网首页Linux
shell监控自动备份是否成功(判断文件是否存在)

shell监控自动备份是否成功(判断文件是否存在)

作者: syncwt | 来源:发表于2016-09-06 12:00 被阅读600次

    引入

    在我们实现每天自动打包生成备份sql文件后(MySql自动备份并删除指定日期前的数据),需要对运行情况做一个邮件监控,很简单的几句脚本就可以搞定啦。

    实现

    1. 创建mysql_bak_warning.sh,目录为/data/mysql_bak
      # touch /data/mysql_bak/mysql_bak_warning.sh
      写入:

      #Crontab time 00:22
      
      # variables
      FILE_DIR=/data/mysql_bak/   #备份存放路径
      DATE=`date +%Y_%m_%d`      #获取当前系统时间
      FILE_NAME="mysqldata_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
      FILE=${FILE_DIR}${FILE_NAME}
      
      #echo "$FILE"
      
      # 判断当天备份文件是否生成
      if [ ! -f "$FILE" ];
      then
            echo "####### $DATA #########">> /data/mysql_bak/mysql_bak.err
            echo "MySQL back up $DATE hava not created!" >>    /data/mysql_bak/mysql_bak.err
            echo "MySQL back up $DATE hava not created!" | mail -s "WARN! MySQL back up $DATE hava not created!" WENTAO_Wanna@126.com
      else
            echo "MySQL back up $FILE have exist!"
            echo "MySQL back up successful!"
      fi
      
    2. 修改文件属性,使其可执行

      # chmod +x /data/mysql_bak/mysql_bak_warning.sh 
      
    3. 修改/etc/crontab

      # vi /etc/crontab
      

      在下面添加

      22 00 * * * root  /data/mysql_bak/mysql_bak_warning.sh 
      

      表示每天凌晨00:22执行一次监控警告脚本

    4. 重新启动crond使设置生效

    # systemctl restart crond.service #重新启动
    
    1. 手动执行效果
      # sh mysql_bak_warning.sh 
      MySQL back up /data/mysql_bak/mysqldata_bak_2016_09_06.tar.gz have exist!
      MySQL back up successful!
      

    附录:shell脚本对文件和文件夹的判断

    #shell判断文件夹是否存在
    #如果文件夹不存在,创建文件夹
    if [ ! -d "/myfolder" ]; then
      mkdir /myfolder
    fi
    
    #shell判断文件,目录是否存在或者具有权限
    
    
    folder="/var/www/"
    file="/var/www/log"
    
    # -x 参数判断 $folder 是否存在并且是否具有可执行权限
    if [ ! -x "$folder"]; then
      mkdir "$folder"
    fi
    
    # -d 参数判断 $folder 是否存在
    if [ ! -d "$folder"]; then
      mkdir "$folder"
    fi
    
    # -f 参数判断 $file 是否存在
    if [ ! -f "$file" ]; then
      touch "$file"
    fi
    
    # -n 判断一个变量是否有值
    if [ ! -n "$var" ]; then
      echo "$var is empty"
      exit 0
    fi
    
    # 判断两个变量是否相等
    if [ "$var1" = "$var2" ]; then
      echo '$var1 eq $var2'
    else
      echo '$var1 not eq $var2'
    fi
    

    参考

    shell bash判断文件或文件夹是否存在

    相关文章

      网友评论

        本文标题:shell监控自动备份是否成功(判断文件是否存在)

        本文链接:https://www.haomeiwen.com/subject/yhedettx.html