网站数据备份,和网站文件打包。

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

#!/bin/bash

#定义此脚本存在的目录(根部目录)
shelldir='backup'

#定义数据库账户
user='root'

#定义数据库用户密码
password='meiyoumima'

#定义生成的目录名称
dirname='huyuaning.com'

#定义要备份的数据库名称
mysqlname='huyuaning'

#定义网站文件的绝对路径
webfile='/var/www/huyuaning.com/'

#定义网站文件打包后生成的文件名
tarname='huyuaning.com'

#定义信息文件的名称
infofilename='huyuaning.com'

#定义当前时间
now=`date +%y.%m.%d-%H:%M:%S`

#####################变量定义结束#########################

#如果目录不存在就创建目录
if [ ! -d /$shelldir/$dirname/ ];then
#不是目录
#创建目录
/bin/mkdir /$shelldir/$dirname/
#设置目录权限
/bin/chmod 777 /$shelldir/$dirname/
fi

#输出重定向到文件
/bin/touch /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
/bin/chmod 777 /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
echo $now '--- 开始备份数据...' > /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

#获得MYSQL开始备份的时间
mysqlstart=`date +%s`
#把数据内容重定向到执行备份的文件,把错误信息重定向到信息文件
/bin/touch /$shelldir/$dirname/$mysqlname.`date +%y.%m.%d`.sql
/bin/chmod 777 /$shelldir/$dirname/$mysqlname.`date +%y.%m.%d`.sql
/usr/bin/mysqldump -u$user -p$password $mysqlname > /$shelldir/$dirname/$mysqlname.`date +%y.%m.%d`.sql 2>>/$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

#判断上面的命令是否出错,如果出错就删除生成的备份文件

#上一个命令执行成功
if [ $? -eq 0 ];then
#数据备份成功
#先把数据备份成功的信息重定向到信息文件

#获得数据文件大小
filesize=`/usr/bin/du -h /$shelldir/$dirname/$mysqlname.$(date +%y.%m.%d).sql |awk -F ' ' '{print $1}'`
#获得MYSQL结束备份的时间
mysqlend=`date +%s`

#获得MYSQL备份耗时,单位秒
mysqltime=$[mysqlend-mysqlstart]
#重新向数据备份信息
echo "$now --- 数据备份成功:$mysqlname.`date +%y.%m.%d`.sql 大小:$filesize 耗时:$mysqltime秒" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

#开始备份文件
###################################################
echo "$now --- 开始备份文件..." >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
#定义开始备份文件的时间
tarstart=`date +%s`
/bin/tar -zPcf /$shelldir/$dirname/$tarname.`date +%y.%m.%d`.tgz $webfile 2>>/$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

#上一个命令执行成功(打包网站文件的命令)

if [ $? -eq 0 ];then #网站文件打包成功

#结束备份文件的时间
tarend=`date +%s`
#获得备份耗时
tartime=$[tarstart-tarend]
#转换成分钟
tarfen=`echo "sclae=2; $tartime/60" | bc`
#获得数据文件大小
tarsize=`/usr/bin/du -h /$shelldir/$dirname/$tarname.$(date +%y.%m.%d).tgz |awk -F ' ' '{print $1}'`
echo "$now --- 文件备份成功:$tarname.`date +%y.%m.%d`.tgz 大小:$tarsize 耗时:$tarfen分" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

else #网站文件打包失败

#删除备份的网页文件

echo "$now --- 网页文件打包失败!" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info

/bin/rm -rf /$shelldir/$dirname/$tarname.`date +%y.%m.%d`.tgz

	#判断是否删除成功
	if [ $? -eq 0 ]; then #删除文件成功
		echo "$now --- 出错的网页打包文件$tarname.`date +%y.%m.%d`.tgz删除成功!" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	else	#删除文件失败
		echo "$now --- 出错的网页打包文件$tarname.`date +%y.%m.%d`.tgz删除失败!" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	fi

fi

#上一个命令执行失败(数据备份失败)
else
#删除生成的备份文件
/bin/rm -rf /$shelldir/$dirname/$mysqlname.`date +%y.%m.%d`.sql
#把删除信息写入信息文件
	#上一个命令执行成功(删除出错的备份文件命令)
	if [ $? -eq 0 ];then
	echo "$now --- 数据备份失败!" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	echo "$now --- 出错的备份文件删$mysqlname.`date +%y.%m.%d`.sql除成功" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	#上一个命令执行失败(删除出错的备份文件命令)
	else
	echo "$now --- 数据备份失败!" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	echo "$now --- 出错的备份文件删$mysqlname.`date +%y.%m.%d`.sql除失败" >> /$shelldir/$dirname/$infofilename.`date +%y.%m.%d`.info
	fi
fi