2011-03-21 50 views
10

旧文件我用下面的crontab记录,以每日备份我的DB:删除使用crontab的

0 2 * * * MYSQL_PWD=password mysqldump -u user db_name > $HOME/db_backups/db_name-$(date +\%Y-\%m-\%d-\%H-\%M).sql 2>> $HOME/db_backups/cron.log 

我想添加其他的crontab记录将删除数据库转储是年纪大了,然后一个月。

有什么想法?

+0

使用logrotate(8) – knittl 2011-03-21 08:45:02

+0

@knittle logrotate用于日志(?) – AlxVallejo 2012-08-30 22:37:53

+1

虽然logrotate可以删除某个时代的文件,但它只能在旋转的文件上运行;不是数据库备份的典型场景。当然,您可以在logrotate配置中添加'find ... -exec rm {} \;命令(在其他答案中记录)作为脚本。这在某些情况下可能有用; [在另一个论坛上的对话线索的最后输入中的示例](http://www.directadmin.com/forum/archive/index.php/t-3654.html) – 2012-10-11 16:20:36

回答

19

只需创建另一个的cron:

0 3 * * * find $HOME/db_backups -name "db_name*.sql" -mtime +30 -exec rm {} \; >> $HOME/db_backups/purge.log 2>&1 

它会找到所有备份超过30天,并删除它们。

+0

我们可以将要删除的文件名写入档案以供参考。 – 2013-12-05 16:14:02

+0

当然,你可以使用'rm -v'或'find -print'来输出被删除文件的名字。 – dogbane 2013-12-06 08:58:34

25
find /db_backups/ -mtime +30 -delete 

该命令将删除超过30天的数据库备份。

3

有一个名为tmpreaper的工具,可安全删除符合某些条件的文件,例如过去的访问日期或修改日期n天。