产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] 告别自己的路,使用amh3.1,特分享一个自己用的数据库自.....

lihai3310
铝牌会员
274.00 价值分

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

评价: 这个问题有价值吗?  没有 (0分)   有, 感谢 (2分)
2013-03-18 13:34:16 1

admin
创始人
31854.37 价值分

欢迎~ 也可以用amh 备份命令
amh backup
:)
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 13:48:33 2

AMH官方号 2011~2021 (10周年)

lihai3310
铝牌会员
274.00 价值分

引用:
admin 发表于 2013-3-18 13:48
欢迎~ 也可以用amh 备份命令
amh backup


amh backup 不知道备份的是网站还是数据库,不敢用。(网站附件太多)
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 13:50:05 3

admin
创始人
31854.37 价值分

引用:
lihai3310 发表于 2013-3-18 13:50
amh backup 不知道备份的是网站还是数据库,不敢用。(网站附件太多)


amh backup 是全面备份,
包括MySQL、网站文件、扩展模块、跟php、nginx、ftp……配置文件等。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 19:14:47 4

lihai3310
铝牌会员
274.00 价值分

引用:
admin 发表于 2013-3-18 19:14
amh backup 是全面备份,
包括MySQL、网站文件、扩展模块、跟php、nginx、ftp……配置文件等。
...


希望能分开,和在一起不利于较大网站或者附件较多的网站备份。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 19:51:35 5

shylocker120
银牌会员
2673.92 价值分

:lol从不用自带的。自己弄个脚本先用着。两个电影站图片暴多。不敢全部打包。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 20:06:12 6

admin
创始人
31854.37 价值分




:D
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-18 20:36:38 7

shylocker120
银牌会员
2673.92 价值分

引用:
admin 发表于 2013-3-18 20:36


:lol好小啊。我的两个站备份下要500M了。。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-19 17:18:56 8

admin
创始人
31854.37 价值分

引用:
shylocker120 发表于 2013-3-19 17:18
好小啊。我的两个站备份下要500M了。。


这论坛,没什么附件呢。加上数据又不多:D
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-19 19:34:10 9

admin
创始人
31854.37 价值分

引用:
lihai3310 发表于 2013-3-18 19:51
希望能分开,和在一起不利于较大网站或者附件较多的网站备份。

amh备份也是提供恢复还原用的,要全面。
附件较多确实不需时常备份网站文件,单独备份数据库就好。

这功能也可以写成一模块提供安装使用,先做下记录了
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2013-03-19 20:26:32 10
 1 2 >  (总2页)
AMH社区列表
用户服务中心