[code lang="js"]

#!/bin/bash
######~mysqldump位置~######
MySQL_Dump="/usr/local/mysql/bin/mysqldump"

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

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

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

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

######~MySQL设置~######
MYSQL_UserName='root'
MYSQL_PassWord='wzh4418090.'

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

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

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

######~FTP设置~######
FTP_Host='******'
FTP_Username='******'
FTP_Password='******'
FTP_Dir='Backup'

######~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()
{
${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Sql}-$1-$(date +"%Y%m%d").sql
tar rvf ${Sql}-$(date +"%Y%m%d").tar.gz ${Sql}-$1-$(date +"%Y%m%d").sql --remove-files
}

if [ ! -f ${MySQL_Dump} ]; then
echo "mysqldump命令错误."
exit 1
fi

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

type lftp >/dev/null 2>&1 || { echo >&2 "lftp命令错误."; }

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
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} del oss://${OSS_Bucket}/${OSS_Dir}/${OldWeb}
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} del oss://${OSS_Bucket}/${OSS_Dir}/${OldSql}
done
echo "正在上传文件到OSS..."
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} del oss://${OSS_Bucket}/${OSS_Dir}/${Web}-$(date +"%Y%m%d").tar.gz
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} del oss://${OSS_Bucket}/${OSS_Dir}/${Sql}-$(date +"%Y%m%d").tar.gz
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} put ${Web}-$(date +"%Y%m%d").tar.gz oss://${OSS_Bucket}/${OSS_Dir}/${Web}-$(date +"%Y%m%d").tar.gz
python $Backup_Dir/oss/osscmd --host=${OSS_Host} --id=${OSS_Id} --key=${OSS_Key} put ${Sql}-$(date +"%Y%m%d").tar.gz oss://${OSS_Bucket}/${OSS_Dir}/${Sql}-$(date +"%Y%m%d").tar.gz
echo "备份文件到OSS完成..."
fi

######~FTP~######
if [ ${Enable_FTP} = 0 ]; then
echo "正在删除FTP过期文件......"
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
lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
cd ${FTP_Dir}
mrm ${OldWeb}
mrm ${OldSql}
bye
EOF
done
echo "正在上传文件到FTP..."
lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
cd ${FTP_Dir}
mrm ${Web}-$(date +"%Y%m%d").tar.gz
mrm ${Sql}-$(date +"%Y%m%d").tar.gz
mput ${Web}-$(date +"%Y%m%d").tar.gz
mput ${Sql}-$(date +"%Y%m%d").tar.gz
bye
EOF
echo "备份文件到FTP完成..."
fi
######~Backup~######

[/code]

osscmd 下载地址 https://help.aliyun.com/document_detail/32171.html

标签: none

添加新评论