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

 

 

 

 

posted @ 2011-09-04 20:14  montya  阅读(893)  评论(0编辑  收藏  举报