2016年10月

[code lang="js"]
#!/bin/bash

######~保存备份文件最长时间(天)~######
Backup_Day='7'

######~备份文件保存位置~######
Backup_Home="/home/backup"

######~需要备份的网站目录~######
Backup_Web=("/home/wwwroot/www.wzhpp.com")

######~需要备份的数据库~######
Backup_Database=("wzhpp")

######~MySQL设置~######
MYSQL_UserName='root'
MYSQL_PassWord='******'

######~备份文件名~######
Web='web'
Sql='sql'

######~备份模式~######
Enable_OSS='0'
# 0: 开启; 1: 关闭

######~OSS设置~######
OSS_Bucket='wzh'
OSS_Dir='backup'
OSS_Host='oss-cn-hangzhou.aliyuncs.com'
#OSS_Host='oss-cn-hangzhou-internal.aliyuncs.com'
OSS_Id='******'
OSS_Key='******'

if [ ! -f ~/.ossutilconfig ]; then
echo "OSS配置文件不存在,自动创建..."
./ossutil config -e ${OSS_Host} -I ${OSS_Id} -K ${OSS_Key}
fi

if [ ! -d ${Backup_Home} ]; then
mkdir -p ${Backup_Home}
fi

######~Backup~######
Backup_Dir=$(pwd)
cd ${Backup_Home}
Backup_Web()
{
Backup_Path=$1
Dir_Name=`echo ${Backup_Path##*/}`
Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
tar zcf ${Web}-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
tar rvf ${Web}-$(date +%Y%m%d).tar.gz ${Web}-${Dir_Name}-$(date +"%Y%m%d").tar.gz --remove-files
}
Backup_Sql()
{
innobackupex --user=$MYSQL_UserName --password=$MYSQL_PassWord --databases=$1 --stream=tar . 1>${Sql}-$1-$(date +"%Y%m%d").tar.gz
tar rvf ${Sql}-$(date +"%Y%m%d").tar.gz ${Sql}-$1-$(date +"%Y%m%d").tar.gz --remove-files
}

echo "正在删除本地过期文件..."
for ((i=${Backup_Day};i<${Backup_Day}+3;i++)); do
OldWeb=${Web}-$(date -d -"${i}"day +"%Y%m%d").tar.gz
OldSql=${Sql}-$(date -d -"${i}"day +"%Y%m%d").tar.gz
rm -rf ${OldWeb}
rm -rf ${OldSql}
done

echo "正在备份网站..."
rm -rf ${Web}-$(date +%Y%m%d).tar.gz
for web in ${Backup_Web[@]};do
Backup_Web ${web}
done

echo "正在备份数据库..."
rm -rf ${Sql}-$(date +%Y%m%d).tar.gz
for db in ${Backup_Database[@]};do
Backup_Sql ${db}
done

######~OSS~######
if [ ${Enable_OSS} = 0 ]; then
echo "正在删除OSS过期文件..."
for ((i=${Backup_Day};i<${Backup_Day}+3;i++)); do
OldWeb=${Web}-$(date -d -"${i}"day +"%Y%m%d").tar.gz
OldSql=${Sql}-$(date -d -"${i}"day +"%Y%m%d").tar.gz
$Backup_Dir/ossutil rm oss://${OSS_Bucket}/${OSS_Dir}/${OldWeb}
$Backup_Dir/ossutil rm oss://${OSS_Bucket}/${OSS_Dir}/${OldSql}
done
echo "正在上传文件到OSS..."
$Backup_Dir/ossutil rm oss://${OSS_Bucket}/${OSS_Dir}/${Web}-$(date +"%Y%m%d").tar.gz
$Backup_Dir/ossutil rm oss://${OSS_Bucket}/${OSS_Dir}/${Sql}-$(date +"%Y%m%d").tar.gz
$Backup_Dir/ossutil cp ${Web}-$(date +"%Y%m%d").tar.gz oss://${OSS_Bucket}/${OSS_Dir}/${Web}-$(date +"%Y%m%d").tar.gz
$Backup_Dir/ossutil cp ${Sql}-$(date +"%Y%m%d").tar.gz oss://${OSS_Bucket}/${OSS_Dir}/${Sql}-$(date +"%Y%m%d").tar.gz
echo "备份文件到OSS完成..."
fi
######~OSS~######

[/code]

ossutil 下载地址 https://help.aliyun.com/document_detail/35477.html
XtraBackup 下载地址 https://www.percona.com/downloads/XtraBackup/LATEST/
CentOS安装需要先安装依赖包yum install perl-DBD-MySQL libev