备份mysql数据库脚本。
手动创建目录/var/backups/mysqldata 也可以自定义,只需修改变量backup_dir的值即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #!/bin/bash
#mysql备份脚本
database=test001
mysql_user=root
mysql_password=123.com
backup_dir=/var/backups/mysqldata
name=`date "+%Y_%m_%d"`
for i in $database
do
[ -d ${backup_dir}/${i} ] || mkdir ${backup_dir}/${i}/
mysqldump -u$mysql_user -p$mysql_password --database $i > ${backup_dir}/${i}/${i}_${name}.sql
file_n=`ls ${backup_dir}/${i}/ | wc -l`
rm_file=`ls -l ${backup_dir}/${i}/ | head -2 | tail -1 | awk '{print $9}'`
if [ $file_n -gt 3 ]
then
rm -f ${backup_dir}/${i}/$rm_file
fi
done
|
#!/bin/bash #mysql备份脚本 database=test001 #定义要备份的数据库,以空格隔开 mysql_user=root #定义备份数据库使用的用户 mysql_password=123.com #定义用户密码 backup_dir=/var/backups/mysqldata #定义备份到的目录 name=`date "+%Y_%m_%d"` #定义备份名称后缀,这里以时间为后缀
for i in $database do [ -d ${backup_dir}/${i} ] || mkdir ${backup_dir}/${i}/ #判断是否有数据库同名目录,若没有则创建一个 mysqldump -u$mysql_user -p$mysql_password --database $i > ${backup_dir}/${i}/${i}_${name}.sql #使用mysqldump对数据库进行备份 file_n=`ls ${backup_dir}/${i}/ | wc -l` #查看一个备份目录下文件个数 rm_file=`ls -l ${backup_dir}/${i}/ | head -2 | tail -1 | awk '{print $9}'` #查看备份目录下第一个文件名,我这里查看的是第二行,因为使用ls -l的话,第一行显示的目录详情 if [ $file_n -gt 30 ] #判断如果一个备份目录中的备份文件数是否大于30个 then rm -f ${backup_dir}/${i}/$rm_file #如果文件数大于30个的话,则删除第一个文件,可以理解为最多保留三十天的备份文件 fi done
在crontab中写入计划任务,每天执行一次脚本即可。
|