AMH 社区首页
AMH社区 - 开放自由有价值的社区
[求助帖] 告别自己的路,使用amh3.1,特分享一个自己用的数据库自..... |
|
---|---|
lihai3310 |
lihai3310 发表于 2013-03-18 13:34:16
初次来到,在外围观了好久,终于找到管理员的联系方式,索取了邀请码。
分享一个数据库自动备份的脚本,自己用的,挺好用的。(脚本来自网络) 使用方法:1、在linux下新建一个脚本文件,比如dbback.sh,将下面的代码拷贝进去(注意xxxx位置要修改)。 2、crontab -e 设置这个脚本自动运行的时间 #!/bin/sh ################################################################## # MySQL主控数据库备份脚本 v2.0 ################################################################## # 配置区 ################################################################## # 1.1 备份SQL脚本所在的目录 # 如果目录不存在,程序会自动创建 BACKUP_DIR="/home/wwwroot/xxxx/web/mysql_back/" # 1.2 发送备份到邮箱 # 如果需要将备份发送到一个邮箱,请将"#"去掉,然后更改邮箱为您的邮箱 # 由于邮件不太安全,不建议打开此功能 #ADMIN_EMAIL="xxxx" # 1.3 数据库用户名/密码/数据库名 # 默认是自动检测 # 如果不希望程序自动检测,请将3行的"#"都去掉,然后更改为实际值 DB_USER="xxxx" DB_PASS="xxxx" DB_NAME="xxxx" # 1.4 mysqldump程序的可能路径 # 默认是自动检测 # 如果不希望自动检测,请将MYSQLDUMP那一行"#"去掉,然后更改为实际值 MYSQLDUMP="/usr/local/mysql/bin/mysqldump" #MYSQLDUMP1="/usr/local/bin/mysqldump" #MYSQLDUMP2="/usr//bin/mysqldump" #MYSQLDUMP3="/usr/local/mysql/bin/mysqldump" # 1.5 是否压缩备份SQL脚本 # 默认为压缩,可以节省空间 COMPRESS=1 max_old_backup=4 clean_old_backup() { count=0 for name in `ls $BACKUP_DIR|grep -E '[0-9]{6,6}\-[0-9]{6,6}' | sort -r` do count=$((count+1)) if [ $count -gt $max_old_backup ] ; then echo -n "Cleaning old backup: $name... " if [ "$testmode" = 1 ] ; then echo -n "rm -fr $BACKUP_DIR/$name" else rm -fr $BACKUP_DIR/$name fi echo " Done." else echo "Keeping old backup: $name" fi done } clean_old_backup ################################################################## # 配置区 结束 # 请不要修改下面的程序内容! ################################################################## # 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 # wget 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/$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 chmod 777 $back_filename.gz fi # 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
点赞,加油! (2分)
2013-03-18 13:34:16 1
|
admin |
欢迎~ 也可以用amh 备份命令
amh backup :)
回复
2013-03-18 13:48:33 2
AMH官方号 2011~2021 (10周年) |
lihai3310 |
回复
2013-03-18 13:50:05 3
|
admin |
amh backup 是全面备份, 包括MySQL、网站文件、扩展模块、跟php、nginx、ftp……配置文件等。
回复
2013-03-18 19:14:47 4
|
lihai3310 |
希望能分开,和在一起不利于较大网站或者附件较多的网站备份。
回复
2013-03-18 19:51:35 5
|
shylocker120 |
:lol从不用自带的。自己弄个脚本先用着。两个电影站图片暴多。不敢全部打包。
回复
2013-03-18 20:06:12 6
|
admin |
:D
回复
2013-03-18 20:36:38 7
|
shylocker120 |
回复
2013-03-19 17:18:56 8
|
admin |
回复
2013-03-19 19:34:10 9
|
admin |
amh备份也是提供恢复还原用的,要全面。 附件较多确实不需时常备份网站文件,单独备份数据库就好。 这功能也可以写成一模块提供安装使用,先做下记录了
回复
2013-03-19 20:26:32 10
|