linux定时备份MySQL并删除上次备份文件

最近有点懒 好久没有写东西了 每天回到家就是玩游戏看视频 对代码不来电 今天实在没什么事 就记录下备份mysql的命令吧

vim bakmysql.sh

#!/bin/bash

# Name:bakmysql.sh

# backup mysql database

backupdir=/var/www/data

time=`date +%Y%m%d%H%M%S`

mysqldump -u username -ppassword databasename | gzip > $backupdir/wp$time.sql.gz

cd $backupdir

chmod 755 wp*

find $backupdir -name “wp*.sql.gz” -type f -mmin +1 -exec rm -rf{} \; > /dev/null 2>&1

保存退出 加入定时任务

chmod +x  ~/bakmysql.sh

crontab -e

1 5 */2 * * ~/bakmysql.sh

说明

代码中 time=` date +%Y%m%d%H%M%S`也可以写为time=”$(date +”%Y%m%d$H%M%S”)”
其中`符号是TAB键上面的符号,不是ENTER左边的’符号,还有date后要有一个空格。

vim 编辑文件如果没有这个命令就用vi  如果文件不存在就会新建 我在root目录下新建文件

backupdir和time 变量名
databasename:数据库名;
user:数据库用户名;
password:用户密码;
wp:自定义备份文件前缀标识。这里用的事wp

cd 选择保存目录

chmod 755 更改文件权限

chmod +x 为脚本添加执行权限
-type f    表示查找普通类型的文件,f表示普通文件。
-mtime +1   按照文件的更改时间来查找文件,+1表示文件更改时间距现在1天以前;如果是 -mmin +1 表示文件更改时间距现在1分钟以前。
-exec rm -rf{} ;   表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1  把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。

crontab -e 编辑配置

1 5 */2 * * ~/bakmysql.sh   对应 分 时 日 月 周  命令 这里是每隔两天的5点01分运行bakmysql.sh文件

最后 不要忘了看crond有没有启动

service crond status#查看服务有没有启动    出现 xxxxx is runing… 说明已启动

service crond start#没有启动时运行

crontab -l #查看定时任务列表

恢复备份文件 方式有很多

1 把备份文件下载下来解压 远程登录mysql 运行备份文件的sql文件

2在服务器上 从压缩文件直接恢复:

#gzip < wpxxxxxxxxx.sql.gz | mysql -u root -p dataname

感谢文字贡献者:

http://blog.sina.com.cn/s/blog_621f9b110101pfp1.html