crontab命令之前写过了,在Linux crontab 访问PHP URL完成定时任务,今天写了一个用来备份数据库的脚本。
主要会用到以下几个命令:
mysqldump
参考文章:mysqldump导入导出数据库总结
创建.sh文件:
cd ~
vi backup.sh
backup.sh内主要内容如下:
mysqldump -hlocalhost -uroot -p'root' --databases database1 | gzip > /var/backups/databases-database1`date +'%Y%m%d_%H%M%S'`.sql.gz
首先用mysqldump命令
1.连接数据库
2.选择要备份数据库
3.选择存储备份文件的方式,这里使用了gzip了生成一个压缩包
根据文档,如果想备份所有数据库,可以使用
mysqldump -hlocalhost -uroot -p'root' --all-databases | gzip > /var/backups/databases-all-database`date +'%Y%m%d_%H%M%S'`.sql.gz
保存。
有备份,就会有备份后的处理,显而易见的问题是备份多了会比较占空间,并且也用不到那么多备份。所以备份完成删除掉一段时间以前的就可以了。这步也可以在备份前做,无所谓。
这里又用到了find命令
参考文章:Linux中find常见用法示例
删除之前的备份文件
在刚才的backup.sh中继续输入:
cd /var/backups/
rm -rf `find . -name '*.sql.gz' -mtime +10`
这句命令有两部分,
第一部分是删除命令:’rm -rf’。就是那句一定要慎用的命令了.
第二部分是找到:当前目录,名字以’.sql.gz’结尾的,更改时间在10天以前的文件。
’.‘表示当前目录,由于上一句是’cd /var/backups/‘,所以这里使用当前目录即可。
’-name ‘和’-mtime’参数是find命令的条件。
具体的说明,和其他条件可以参考前边说到的文章。
到这里基本上备份脚本就完成了。
但是为了什么时候突然想看一下日志,或者备份出错的时候查问题,还可以在脚本里加上记录日志的命令:
日志
echo 'Begin Backup Database At :' `date +'%Y-%m-%d %H:%M:%S'`
这里又用到了date。
脚本保存之后,记得添加执行权限;
sudo chmod +x backup.sh
接下来就是在系统里添加crontab任务了。
cd /etc/
vi crontab
在文件末尾,加上
m h dom mon dow user command
00 5 * * * root /home/yourname/backup.sh >> /var/log/backup.log
这样,backup.sh里的echo就会输出到/var/log/backup.log中了。
Over。