首页 > 脚本语言 > shell > prima 上面的一些脚本—backupdb
2015
08-21

prima 上面的一些脚本—backupdb

今天看到电脑上面有个08年的时候用过的prima安装包,看下了上面的安装脚本和备份脚本之类的,

发现本来都是很简单的事情,代码都写的很长,全部是各种判断,对于要求代码严谨的人来说可能很喜欢,对于要求

代码能简洁完成需求的人来说就有点笨重,看下下面的mysql备份脚本

 

#!/bin/sh
##################################################################
# Prim@Hosting MySQL主控数据库备份脚本 v3.0
#
# 同时适用于PH2.x专业版 and 商务版 两个版本
#
##################################################################
# 配置区
##################################################################
# 1.1 备份SQL脚本所在的目录
# 如果目录不存在,程序会自动创建
if [ -z “$1″ ] ; then
BACKUP_DIR=”/www/prima/backup” ;
else
BACKUP_DIR=”$1″ ;
fi

# 1.2 发送备份到邮箱
# 如果需要将备份发送到一个邮箱,请将”#”去掉,然后更改邮箱为您的邮箱
# 由于邮件不太安全,不建议打开此功能
#ADMIN_EMAIL=”webmaster@yourname.com”

# 1.3 数据库用户名/密码/数据库名
# 默认是自动检测
# 如果不希望程序自动检测,请将3行的”#”都去掉,然后更改为实际值
#DB_USER=”primadbadmin”
#DB_PASS=”changeme”
#DB_NAME=”primadb”

# 1.4 mysqldump程序的可能路径
# 默认是自动检测
# 如果不希望自动检测,请将MYSQLDUMP那一行”#”去掉,然后更改为实际值
#MYSQLDUMP=”/usr/bin/mysqldump”
MYSQLDUMP1=”/usr/bin/mysqldump”
MYSQLDUMP2=”/usr/local/bin/mysqldump”
MYSQLDUMP3=”/usr/local/mysql/bin/mysqldump”

# 1.5 配置文件位置
# 注:在自动检测模式,如果先发现商务版配置文件存在,则备份商务版数据库,不再检测专业版
# 1.5.1 商务版的配置文件位置
DMCCONFIG=”/www/prima/common/DMC.Config.inc”
# 1.5.2 2.x专业版的配置文件位置
PUBCONFIG=”/www/prima/htdocs/common/PUB.Config.inc”

# 1.6 是否压缩备份SQL脚本
# 默认为压缩,可以节省空间
COMPRESS=1
##################################################################
# 配置区 结束
# 请不要修改下面的程序内容!
##################################################################
# check mysqldump
if [ -z “$MYSQLDUMP” ] && [ -x $MYSQLDUMP1 ] ; then
MYSQLDUMP=$MYSQLDUMP1
fi
if [ -z “$MYSQLDUMP” ] && [ -x $MYSQLDUMP2 ] ; then
MYSQLDUMP=$MYSQLDUMP2
fi
if [ -z “$MYSQLDUMP” ] && [ -x $MYSQLDUMP3 ] ; then
MYSQLDUMP=$MYSQLDUMP3
fi
if [ ! -x $MYSQLDUMP ] ; then
echo “$MYSQLDUMP does not exist and executable!”
echo “$MYSQLDUMP 不存在或不可执行!”
exit 1
fi

# rename existing backup dir if it is a file
if [ -f $BACKUP_DIR ] ; then
mv -v $BACKUP_DIR $BACKUP_DIR.bak
mkdir -pv $BACKUP_DIR
fi

# make dir of backup dir
if [ ! -d $BACKUP_DIR ] ; then
mkdir -pv $BACKUP_DIR
fi

# fetch db user/pass from config file
if [ -z “$DB_USER” ] || [ -z “$DB_PASS” ] || [ -z “$DB_NAME” ] ; then
CONFIGFILE=””
if [ ! -f $DMCCONFIG ] ; then
if [ ! -f $PUBCONFIG ] ; then
echo “$DMCCONFIG and $PUBCONFIG do not exist!”
echo “$DMCCONFIG 和 $PUBCONFIG 都不存在!”
exit 1
else
CONFIGFILE=$PUBCONFIG
fi
else
CONFIGFILE=$DMCCONFIG
fi

if [ “$CONFIGFILE” = “$DMCCONFIG” ] ; then
DB_USER=`grep DMC_MAINDBUSER $DMCCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db username”
echo “无法获得数据库用户名”
exit 1
fi
DB_PASS=`grep DMC_MAINDBPASS $DMCCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db password”
echo “无法获得数据库密码”
exit 1
fi
DB_NAME=`grep DMC_MAINDBNAME $DMCCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db name”
echo “无法获得数据库名”
exit 1
fi
fi

if [ “$CONFIGFILE” = “$PUBCONFIG” ] ; then
DB_USER=`grep PUB_MAINDBUSER $PUBCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db username”
echo “无法获得数据库用户名”
exit 1
fi
DB_PASS=`grep PUB_MAINDBPASS $PUBCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db password”
echo “无法获得数据库密码”
exit 1
fi
DB_NAME=`grep PUB_MAINDBNAME $PUBCONFIG | awk -F ‘”‘ ‘{printf(“%s”, $4)}’`
if [ $? != 0 ] ; then
echo “can not get db name”
echo “无法获得数据库名”
exit 1
fi
fi

fi

# get current datetime
datestr=`date ‘+%Y%m%d-%H%M%S’`

# dump db to sql file
back_filename=”$BACKUP_DIR/$DB_NAME.$datestr.sql”
umask 066
$MYSQLDUMP -u$DB_USER -p$DB_PASS $DB_NAME > $back_filename

# check dump result
if [ $? != 0 ] ; then
echo “dump db failed”
echo “备份数据库程序执行失败”
exit 1
fi

# mail to you
if [ ! -z “$ADMIN_EMAIL” ] ; then
sendmail $admin_emailbox < $back_filename
fi

# compress sql file to save space
if [ “$COMPRESS” = “1” ] ; then
gzip $back_filename
fi

# chown
chown ftpd:ftpd $back_filename.gz
chmod 600 $back_filename.gz

# finish
echo -n “Backup finished: $back_filename”
if [ “$COMPRESS” = “1” ] ; then
echo “.gz”
fi
echo -n “备份完成:$back_filename”
if [ “$COMPRESS” = “1” ] ; then
echo “.gz”
fi
exit 0

最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复