用于LuManager的自动定时加密备份网站数据并上传到其它FTP空间的shell脚本

admin 发表于 [Linux] 分类,标签: CentOS Linux LuManager shell
3
#!/bin/bash
#为backup.sh添加执行权限chmod +x /root/backup.sh
#添加脚本至crontab(自动启动程序)执行命令crontab -e,添加每天0点10分启动代码
#10 00 * * * /root/backup.sh

#===========配置区开始==============
BACKUP_DATA_TEMP="/home/backup"
DB_USR="数据库用户名"
DB_PWD="数据库密码"
FTP_HOST="FTP主机名"
FTP_USR="FTP用户名"
FTP_PWD="FTP密码"
ZIP_PWD="压缩包密码"

#数据库文件位置
DB_PATH="/home/mysql_data"

#网站数据文件位置
WEB_PATH="/home/ftp/1520"

#其它要备份的文件夹
OTHER_PATH="/home/lum_safe_files"

#按周清理,设为0则按天清理
ROUND_WEEK="1"
#===========配置区结束==============

FTP_FOLDER=$(date +"%Y-%m-%d")
if [ ROUND_WEEK = 1 ];then
OLD_FTP_FOLDER=$(date -d -3week +"%Y-%m-%d")
else
OLD_FTP_FOLDER=$(date -d -3day +"%Y-%m-%d")
fi

#在FTP空间里新建目录
ftp -v -n $FTP_HOST <<END
user $FTP_USR $FTP_PWD
type binary
prompt off
cd public_html
mkdir $FTP_FOLDER
ls . temp_ftpdir.txt
bye
END

mkdir $BACKUP_DATA_TEMP
cd $BACKUP_DATA_TEMP

#========压缩其它文件========
zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/lum_safe_files.zip $OTHER_PATH/
#上传到FTP空间
ftp -v -n $FTP_HOST <<END
user $FTP_USR $FTP_PWD
type binary
cd public_html
cd $FTP_FOLDER
put lum_safe_files.zip
bye
END
rm -rf $BACKUP_DATA_TEMP/lum_safe_files.zip


#===========导出mysql数据库===========
DBLIST=`ls -p $DB_PATH | grep / | tr -d /`
for dbname in $DBLIST
do
#mysqldump -u $DB_USR -p$DB_PWD $dbname > $BACKUP_DATA_TEMP/$dbname.sql
mysqlhotcopy $dbname -u $DB_USR -p $DB_PWD $BACKUP_DATA_TEMP | logger -t mysqlhotcopy 
#压缩数据库
zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/$dbname.mysql.zip $BACKUP_DATA_TEMP/$dbname/
#删除sql文件
rm -rf $BACKUP_DATA_TEMP/$dbname/
#上传到FTP空间
ftp -v -n $FTP_HOST <<END
user $FTP_USR $FTP_PWD
type binary
cd public_html
cd $FTP_FOLDER
put $dbname.mysql.zip
bye
END
rm -rf $BACKUP_DATA_TEMP/$dbname.mysql.zip
done

#==========压缩网站数据=============
DBLIST=`ls -p $WEB_PATH | grep / | tr -d /`
for dbname in $DBLIST
do
zip -9 -q -r -P $ZIP_PWD $BACKUP_DATA_TEMP/$dbname.page.zip $WEB_PATH/$dbname
#上传到FTP空间
ftp -v -n $FTP_HOST <<END
user $FTP_USR $FTP_PWD
type binary
cd public_html
cd $FTP_FOLDER
put $dbname.page.zip
bye
END
rm -rf $BACKUP_DATA_TEMP/$dbname.page.zip
done


if [ -f "temp_ftpdir.txt" ] && [ `cat temp_ftpdir.txt | awk '{print $9}' | grep $OLD_FTP_FOLDER | wc -l` -ge 1 ];then
#删除FTP空间5天前的数据 
ftp -v -n $FTP_HOST <<END
user $FTP_USR $FTP_PWD
type binary
cd public_html
cd $OLD_FTP_FOLDER
prompt off
mdelete *.*
cd ../
rmdir $OLD_FTP_FOLDER
bye
END
rm -rf temp_ftpdir.txt
fi

#删除本地的备份数据
rm -rf $BACKUP_DATA_TEMP/

然后使用命令:

vi /usr/local/LuNamp/cmd/crontab_cmd.sh

在crontab_cmd.sh文件中添加一行,内容为:

10 00 * * * /root/backup.sh

必须要修改/usr/local/LuNamp/cmd/crontab_cmd.sh这个文件,因为LuManager会在系统重启后,把crontab中的内容用/usr/local/LuNamp/cmd/crontab_cmd.sh文件中的内容进行替换。

« 上一篇:使用短网址也能赚钱 Shell高级编程:下一篇 »

3 条评论

发表我的评论