zoukankan      html  css  js  c++  java
  • shell定时备份mysql脚本以及调用pythod脚本,支持开机启动。

    作为一个linux菜鸟,第一次安装ubuntu居然花费了整整一天时间,不小心把win7给整没了。主要还是双系统不兼容,搞的手忙脚乱哎,真痛苦。

    这几个脚本虽然简单,但也挺有成就感的。,现学现卖吧。

    最近的项目在线上部署很多,不同地市,几乎都有,有些服务器老是出毛病要重启,这就问题来了,服务器上运行了很多程序,要一个个手动去重启,很麻烦,

    比较变态的是,我们每台服务器基本上都安装了爬虫程序,如果凌晨重启,没人去管理,很可能网络上有不少重要数据爬不到。于是写了几个shell脚本

    一边google一边调试。

    好了,不废话

    A.mysql定时备份

    主要是备份业务表,数据量不大的重要配置数据,每天凌晨1点备份一次,非增量备份。

    backupPscmsDb.sh

     1 #!/bin/bash
    2 set -e
    3 HOST="127.0.0.1"
    4 #获取当前目录路径
    5 BACKUP_PATH=`pwd`
    6 #数据库名
    7 DATE_NAME="pscms"
    8 #表名 以空格分开
    9 DATE_TABLE="systemUser systemParam"
    10 #账号
    11 UAER_NAME="****"
    12 #密码
    13 PASSWORD="*****"
    14 #当前日期 yyyymmdd
    15 TIME=`date +%Y%m%d`
    16 #判断目录是否存在
    17 if [ !-d $BACKUP_PATH/$TIME ]; then
    18 mkdir $BACKUP_PATH/$TIME
    19 else
    20 rm -rf $BACKUP_PATH/$TIME
    21 mkdir $BACKUP_PATH/$TIME
    22 fi
    23 for TABLE_NAME in$DATE_TABLE
    24 do
    25 mysqldump $DATE_NAME$TABLE_NAME>$BACKUP_PATH/$TIME/$TABLE_NAME.sql
    26 done
    27 #删除5天前的数据
    28 find $BACKUP_PATH-name "201*"-mtime 5-type d -exec rm -rf -fv {} \;

     脚本写完后,需要配置到系统中,要用到任务调度功能,以支持定时备份

    1 crontab -e
    2 #每天凌晨1点定时备份
    3 001*** cd /opt/backupPscmsData;./backupPscmsDb.sh

      

      

    B.调用pythod脚本,支持开机启动

    powerAutoRun.sh

     1 #!/bin/bash
    2 set -e
    3 BASEDIR=$(readlink -f$0)
    4 BASEDIR=$(dirname $BASEDIR)
    5 cd $BASEDIR
    6 export BASEDIR=$BASEDIR
    7 FILE_NAME="powerAutoRunConf.txt"
    8 logtime=`date +%Y-%m-%d\ %T`
    9 logfile=`pwd`/powerAutoRun.log
    10 cat $FILE_NAME|while read line
    11 do
    12 #判断读取的链接是文件格式,并且一定要存在
    13 if [ -f$line ];then
    14 case ${line##*.} in
    15 "py")
    16 #cd 到该目录
    17 cd `dirname $line`
    18 #开始执行脚本
    19 python `basename $line` restart
    20 echo "`date +%Y-%m-%d\ %T` $line 启动成功">>$logfile
    21 ;;
    22 "sh")
    23 $line
    24 echo "`date +%Y-%m-%d\ %T` $line 启动成功">>$logfile
    25 ;;
    26 "*")
    27 echo "`date +%Y-%m-%d\ %T` $line 不支持开机启动">>$logfile
    28 ;;
    29 esac
    30 else
    31 echo "`date +%Y-%m-%d\ %T` $line 不是文件或者不存在">>$logfile
    32 fi
    33 done

      

      powerAutoRunConf.txt 贴上你需要启动的脚本路径就行了。目前写的比较简单,只支持shell脚本和pythod脚本。前提这个脚本都需要可执行权限。

    另外 要在 /ect/rc.local 中配置这个开机自动启动脚本路径

    1 vim /etc/rc.local
    2 cd /opt/backupCollectorData;./powerAutoRun.sh

    c.切分nginx日志,这个是在网上copy过来的,就当拿来主义了。

    nginxSplitLog.sh

     1 #!/bin/bash
    2 set -e
    3 BASEDIR=$(readlink -f$0)
    4 BASEDIR=$(dirname $BASEDIR)
    5 cd $BASEDIR
    6 export BASEDIR=$BASEDIR
    7 DAY=7
    8 NGINX_APP="/opt/nginx/sbin/nginx"
    9 NGINX_LOG="/opt/nginx/logs"
    10 FILE_NAME="host.access.log"
    11 DATE="host.access"$(date -d "yesterday"+"%Y%m%d").log
    12 cd ${NGINX_LOG}
    13 mv $FILE_NAME$DATE
    14 #重建nginx日志
    15 $NGINX_APP-s reopen
    16 #删除n天以前的日志
    17 find $NGINX_LOG-name "host.access*.jar"-mtime $DAY-type f -exec rm -fv {} \;

       这些脚本只注重功能,其他细节的东西没弄了,比如日志记录。以后需要再弄上把

      apk备份

    #!/bin/bash
    #备份资源apk,以及相应的图片logo
    
    backUpApkInfo()
    {
     FILENAME="appStoreApk_`date +%Y%m%d`.tar.gz"
     FILE_BACKUP_TARGET_PATH="/mnt/appStoreInfoBackup"
     FILE_BACKUP_SRC_PATH="/opt/dfadmin"
      if [ ! -d $FILE_BACKUP_TARGET_PATH ]; then
            mkdir $FILE_BACKUP_TARGET_PATH
        echo "创建备份源$FILE_BACKUP_TARGET_PATH,开始备份请稍后...."
      else
        echo '备份源已经存在,开始备份请稍后....'
      fi
     cd $FILE_BACKUP_TARGET_PATH
     tar zcf $FILENAME $FILE_BACKUP_SRC_PATH
    }
    echo '------------start backup apk------------------'
    
    CUR_TIME=`date +"%Y-%m-%d %H:%M:%S"`
            backUpApkInfo
    LAST_TIME=`date +"%Y-%m-%d %H:%M:%S"`
    
    start_data=`date -d  "$CUR_TIME" +%s`    #把当前时间转化为Linux时间
    
    complete_data=`date -d  "$LAST_TIME" +%s`
    
    interval=`expr $complete_data-$start_data`  #计算2个时间的差
    
    if [ $? -eq 0 ]
    then
       echo "---------------backup apk completed time : $interval s-----------------"
    else
       echo "--------------------backup apk was error----------------"
    fi
  • 相关阅读:
    explode — 使用一个字符串分割另一个字符串
    echo — 输出一个或多个字符串
    count_chars — 返回字符串所用字符的信息
    convert_uuencode — 使用 uuencode 编码一个字符串
    convert_uudecode — 解码一个 uuencode 编码的字符串
    convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
    chunk_split — 将字符串分割成小块
    chr — 返回指定的字符
    addslashes — 使用反斜线引用字符串
    addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
  • 原文地址:https://www.cnblogs.com/montya/p/shell.html
Copyright © 2011-2022 走看看