#!/bin/bash
#本地备份路径
LOCAL_BACK_PATH=/home/backup
#mysqldump的执行路径
MYSQL_PATH=/usr/local/mysql/bin/mysql
MYSQL_DUMP_PATH=/usr/local/mysql/bin/mysqldump
#FTP信息
FTP_BIN_PATH=/usr/bin/ftp
FTP_IP='10.146.190.255'
FTP_USER=ftp账号
FTP_PWD=ftp密码
FTP_PORT=ftp端口
FTP_PATH=ftp服务器要备份的目录 例如: /backup/ex1
#Mysql信息
MYSQL_USER=root
MYSQL_PWD=root
#网站目录
WEB_PATH=/usr/local/nginx/html
if [ ! -f $FTP_BIN_PATH ]; then
yum install ftp -y;
fi
if [ ! -d $LOCAL_BACK_PATH ]; then
mkdir $LOCAL_BACK_PATH;
fi
#定义需要备份的数据库的名字和旧数据库的名字
DataBackName=Data_$(date +"%Y%m%d").tar.gz
WebBackName=Web_$(date +"%Y%m%d").tar.gz
OldData=Data_$(date -d -7day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -7day +"%Y%m%d").tar.gz
#先进入备份目录
cd $LOCAL_BACK_PATH;
#删除本地3天前的数据
rm -rf Data_$(date -d -7day +"%Y%m%d").tar.gz Web_$(date -d -7day +"%Y%m%d").tar.gz
#获取mysql下面的所有数据库
database_tables=`$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PWD -B -N -e 'SHOW DATABASES'|xargs`;
#导出数据库,一个数据库一个压缩文件
echo '数据库备份--------START';
for db in ${database_tables};do
($MYSQL_DUMP_PATH -u $MYSQL_USER -p$MYSQL_PWD ${db} -q --skip-lock-tables | gzip -9 -> ${db}.sql.gz)
echo "$db OK!";
done
echo '数据库备份--------END';
#压缩数据库文件为一个文件
echo '打包数据库文件----START';
tar zcf $DataBackName *.sql.gz
echo '打包数据库文件----END';
echo '移除数据库备份----START';
rm -rf *.sql.gz
echo '移除数据库备份----END';
#压缩网站数据
echo $WebBackName;
tar zcf $WebBackName $WEB_PATH
echo '打包网站文件'/$WebBackName;
echo 'END';
echo '开始FTP上传';
#上传到FTP空间,删除FTP空间五天前的数据
ftp -v -n $FTP_IP $FTP_PORT << END
user $FTP_USER $FTP_PWD
type binary
cd $FTP_PATH
delete $OldData
delete $OldWeb
put $DataBackName
put $WebBackName
bye
END
echo date'脚本结束!';