利用crontab系统每天定时备份MySQL数据库及删除指定crontab定时任务

时间:2023-03-09 02:00:43
利用crontab系统每天定时备份MySQL数据库及删除指定crontab定时任务

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

1、创建保存备份文件的路径/mysqldata

 mkdir /mysqldata

2、创建/usr/sbin/bakmysql文件

 vi /usr/sbin/bakmysql

输入

rq=` date +%Y%m%d `
tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql

/var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同

/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。

3、修改文件属性,使其可执行

chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

vim /etc/crontab

在下面添加

00 3 * * * root /usr/sbin/bakmysql

表示每天3点钟执行备份

5、重新启动crond

service crond restart

完成。

这样每天你在/mysqldata可以看到这样的文件

mysql20040619.tar.gz

linux下删除指定crontab定时任务

1、新建两个脚本文件用来进行测试

test1.sh

ping 114.114.114.114  

test2.sh

ping 8.8.8.8  

2、通过crontab -e命令编辑crontab任务,增加内容如下(时间间隔为1秒钟):

*/1 * * * * /dd/shell/test1.sh
*/1 * * * * /dd/shell/test2.sh

添加完成后,查看下crontab内容:

[root@localhost shell]# crontab -l
*/1 * * * * /dd/shell/test1.sh
*/1 * * * * /dd/shell/test2.sh

增加了crontab任务后,在/var/spool/cron目录下会有一个当前登录账号命名的文件。比如我的登录账号是root。则会存在一个root文件。该文件的内容就是刚添加的crontab任务。

[root@localhost cron]# cat /var/spool/cron/root
*/1 * * * * /dd/shell/test1.sh
*/1 * * * * /dd/shell/test2.sh

3、删除crontab内容里的test2.sh的任务

其实该处是使用sed命令来处理/var/spool/cron/root 文件,将含test2.sh的行的内容删除掉。

sed -i '/test2.sh/d' /var/spool/cron/root   

命令执行完后,再通过crontab -l命令查看。

[root@localhost shell]# crontab -l
*/1 * * * * /dd/shell/test1.sh

可以看到test2.sh的任务被删除掉了。通过观察,test2.sh的脚步也不再被执行。说明确实删除成功。

4、删除crontab内容空白行

在执行完上面的sed -i的命令后,crontab -l会发现多出一行空白,如果你觉得看的别扭,你可再通过如下sed命令把空白行删除掉。

sed -i '/^$/d' /var/spool/cron/root