计算机技术

shell定时备份mysql脚本以及调用pythod脚本,支持开机启动。

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

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

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

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

一边google一边调试。

好了,不废话

A.mysql定时备份

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

backupPscmsDb.sh

copycode
 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 {} ;
copycode

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

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

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

powerAutoRun.sh

copycode
 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
copycode

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

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

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

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

nginxSplitLog.sh

copycode
 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 {} ;
copycode

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

  apk备份

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

 http://www.cnblogs.com/montya/archive/2011/09/04/shell.html

Related Articles

发表回复

Check Also
Close
Back to top button