可以将这个脚本放进crontab,每天凌晨执行一次,自动备份将生成压缩文件
#!/bin/bash #This mysql backup script for daily #environment:redhat as 4 #Powered by灰熊 #2007-10-31
#定义有备份的数据库名 dbname=mysql
#定义备份数据库时使用的用户名和密码 dbuser=root dbpasswd=12345a
#数据库备份的路径 backuppath=/tmp/db/
#数据库备份日志文件存储的路径 logfile=/tmp/db/db.log
#以当前的时间作为备份的数据库命名。 dumpfile=$(date +%y%m%d%H%M)
#这个函数用来备份数据库 back_db() { #将备份的时间、数据库名存入日志 echo $(date +%y%m%d%H%M)" Beginning database "${dbname}" backup-----------------------------------" >>${logfile}
#备份数据库,如果有错误信息也记入日志。 mysqldump -u${dbuser} -p${dbpasswd} ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
#将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。 tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
#将压缩后的文件名存入日志。 echo "backup file name:"$(date +%y%m%d%H%M)".tar.gz" >>${logfile} echo -e "------------------------------\n" >>${logfile} }
#这个函数用来删除七天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件,如果把目录搞错了。。。。。。。。。 rm_oldfile() { #查找出当前目录下七天前生成的文件,并将之删除 find ./ -type f -mtime +7 -exec rm {} \; }
#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误 cd ${backuppath}
#运行备份数据函数 back_db
#运行删除文件函数 rm_oldfile
出处:http://bbs.chinaunix.net/viewthread.php?tid=1009931&highlight=shell+mysql |