[原创]SHELL自动备份网站和数据库同时发邮件

2011年1月30日 | 分类: 技术相关 | 标签: , , ,

本空间支持SSH,一来为了cross wall,二来整理网站什么的也能方便点,比如打个包,解个包,check out点代码什么的。
好了,直接贴代码吧。

#!/bin/bash
#
# Backup web source code and database data to a tarball
# Also can send it to your email as a attachment
#
# crontab -e
# 0 0 * * * /home/burgess/backup.sh >/dev/null 2>&1
#
 
# set variables
web_path=~/public_html
db_name=your_db_name
db_user=your_db_user
db_pass=your_db_pass
email=burgess@163.com
email_title="Web Backup - xyh.org - "$(date +"%Y-%m-%d")
 
new_file=Backup_$(date -d "yesterday" +"%Y%m%d").tar.gz
old_file=Backup_$(date -d "-2days" +"%Y%m%d").tar.gz
 
cd $web_path
# dump database data to a sql file
mysqldump --add-drop-table\
		--comments\
		--complete-insert\
		--allow-keywords\
		--triggers\
		--routines\
		--force\
		--password=$db_pass\
		--user=$db_user\
		$db_name > database.sql
 
# make it to a tarball
tar zcf ~/$new_file * .[!.]* --exclude=cgi-bin
 
# remove old files
rm -f database.sql
if [ -e ~/$old_file ]; then 
	rm -f ~/$old_file
fi
 
# send attachment email
(echo "Hi, I'm the postman.";uuencode ~/$new_file $new_file) | mail -s $email_title $email

使用时只要修改前面6个变量的值就可以了,然后把它放到任务里定时执行。
先执行“crontab -e”
然后添加一行
0 0 * * * /home/burgess/backup.sh >/dev/null 2>&1
然后就可以每天0点自动执行打包备份并把压缩包当附件发送到你的邮箱里了。

目前还没有任何评论.

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。