一个简陋的mysql和网站备份脚本
脚本功能:
1、自动备份mysql全库,自动删除一周前备份,数据有效期为一周。
2、自动备份网站数据,自动删除三个月前备份,数据有效期三个月;每月1号执行目录完全备份,其余时间增量备份。
3、对备份数据进行权限控制,防止恶意人员查看修改,若以root权限执行脚本,则其他用户对备份数据没有任何权限。
3 | #lampp mysql databases and web data backup bash; |
4 | #mysql backup data keep 7 days; |
5 | #website backup data keep 3 months and incremental backup in per month. |
8 | #website:www.linuxpad.cn |
9 | #mail:linuxpad.cn(at)gmail.com |
10 | #created:26 November 2012 |
12 | #Mysql dabase information |
16 | MYSQL="/opt/lampp/bin/mysql" |
17 | MYSQLDUMP="/opt/lampp/bin/mysqldump" |
20 | WEBHOME="/opt/lampp/htdocs/blog" |
21 | BACKUP_DB="/opt/backup/database" |
22 | BACKUP_WEB="/opt/backup/web" |
25 | time=`date +"%Y-%m-%d"` |
31 | if [ ! -w "$BACKUP_DB" ] && [ ! -w "$BACKUP_WEB"]; then |
32 | chmod -R 700 $BACKUP_DB $BACKUP_WEB |
36 | $MYSQLDUMP -u $db_user -p$db_passwd -h $db_host --all-databases > $BACKUP_DB/$time |
37 | cd $BACKUP_DB && tar -czf $time.tar.gz $time && rm -rf $time && chmod go-rwx $time.tar.gz |
38 | if [ $weekday == "1" ]; then |
39 | find $BACKUP_DB -mtime +7 | xargs rm -rf {} |
43 | if [ ! -d $BACKUP_WEB/$month ];then |
44 | mkdir $BACKUP_WEB/$month |
45 | touch $BACKUP_WEB/$month/$month |
46 | chmod -R go-rwx $BACKUP_WEB/$month |
48 | cd $BACKUP_WEB/$month && tar -g $month -czf $time.tar.gz $WEBHOME && chmod go-rwx $time.tar.gz |
49 | if [ $day == "01" ]; then |
50 | find $BACKUP_WEB -mtime +90 | xargs rm -rf{} |
使用脚本前需在/opt下事先建立好目录
1 | mkdir -p /opt/backup/{database,web} |
2 | chmod -R go-wrx /opt/backup |
添加计划任务
假设脚本位置为/root/cron/backup.sh,每天2点执行备份
3 | 0 2 * * * /root/crontab/backup.sh 2>/root/crontab/backup.log |