zsen
2015-11-27 11:54:04 +08:00
```
#!/bin/bash
# 配制开始,根据需要修改以下值
# 备份文件保存目录
Backup_Home="/home/Backup/"
# 需要备份的站点目录,多目录用空格隔开
Backup_WWW_Dir="/home/wwwroot/www_Dir"
# 需要备份的数据库名 All 或 输入类似 db1 db2 的列表清单
Backup_DB_Name="dbname"
# 数据库配置
DB_HOST=localhost
DB_User=user
DB_Pass=pass
# 备份 MYSQL 时生成 CREATE 数据库语句
CREATE_DATABASE="yes"
# 发生到邮件的地址
Mail_TO="your@mail"
# 保留数据库备份文件的天数
Backup_DB_Date=5
# 保留网站目录备份文件的天数
Backup_Code_Date=5
# 邮件发送方式
Mail_Type="mail"
# 配制结束,以下内容不需要修改
# 当前备份日期和时间
DATE=`date +%Y%m%d`
DEL_SQL_DATE=`date -d -${Backup_DB_Date}day +%Y%m%d`
DEL_CODE_DATE=`date -d -${Backup_Code_Date}day +%Y%m%d`
OPT="--quote-names --opt"
# 检查备份路径是否存在,不存在则建立
if [ ! -e "${Backup_Home}" ]; then
mkdir -p "${Backup_Home}"
fi
# 删除备份目录下前设定天数的备份数据
rm -f ${Backup_Home}DB_${DEL_SQL_DATE}.sql.gz
rm -f ${Backup_Home}Code_${DEL_CODE_DATE}.tar.gz
# 检查是否需要生成 CREATE 数据库语句
if [ "${CREATE_DATABASE}" = "yes" ]; then
OPT="${OPT} --databases"
else
OPT="${OPT} --no-create-db"
fi
# 检查是否是备份所有数据库
if [ "${Backup_DB_Name}" = "all" ]; then
Backup_DB_Name="--all-databases"
fi
BACKUP_DB_FILE=DB_${DATE}.sql.gz
BACKUP_CODE_FILE=Code_${DATE}.tar.gz
cd ${Backup_Home}
# 备份数据库
`which mysqldump` --user=${DB_User} --password=${DB_Pass} --host=${DB_HOST} ${OPT} ${Backup_DB_Name} | gzip > "${BACKUP_DB_FILE}"
#`which mysqldump` --host=${DB_HOST} ${OPT} ${Backup_DB_Name} | gzip > "${BACKUP_DB_FILE}"
# 备份网站目录。此处用了绝对路径,解压时需注意
tar zcPf ${BACKUP_CODE_FILE} ${Backup_WWW_Dir}
# 将备份文件保存至指定邮箱
if [ "${Mail_Type}" = "mail" ]; then
echo "MySQL DataBase and website Code Backup." | mail -s "DB&Code Backup ${DATE}" -a ${BACKUP_DB_FILE} -a ${BACKUP_CODE_FILE} -r backup-user@zsen.me ${Mail_TO}
fi
if [ "${Mail_Type}" = "mutt" ]; then
echo "MySQL DataBase and website Code Backup." | mutt -s "DB&Code Backup ${DATE}" ${Mail_TO} -a ${BACKUP_DB_FILE} -a ${BACKUP_CODE_FILE}
fi
```