删除超过24小时的文件并使用find清空目录

时间:2013-11-20 21:18:59

标签: cron find crontab

我有这些cron任务来管理24小时后自动删除备份。

0 0 * * * cd /home/foo/backups && mkdir -p $(date +\%Y-\%m-\%d)
0,30 * * * * find /home/foo/backups -name "foo.*.sql.gz" -mmin +1440 -exec rm {} \;
0,30 * * * * find /home/foo/backups -mindepth 1 -type d -empty -delete
0,30 * * * * mysqldump -ufoo -pbar foo | gzip > /home/foo/backups/$(date +\%Y-\%m-\%d)/foo.$(date +\%Y-\%m-\%d.\%H\%M).sql.gz

我所看到的是,24小时后,我最终得到一个/ home / foo / backups文件夹,里面没有任何内容,而我希望看到一个文件夹,例如/ home / backups / 2013-11-20,前一天有备份。

上面的语法出了什么问题?

3 个答案:

答案 0 :(得分:0)

在这三行中没有创建备份。也许你错过了一条线。

让我们详细分析每个命令:

0 0 * * * cd /home/foo/backups && mkdir -p $(date +\%Y-\%m-\%d)

每天0.0,它转到/home/foo/backups并在2013-11-20格式上创建一个目录。 (你也可以说mkdir -p /home/foo/backups/$(date +\%Y-\%m-\%d))。

0,30 * * * * find /home/foo/backups -name "foo.*.sql.gz" -mmin +1440 -exec rm {} \;

每天0.30,它会在foo.*.sql.gz中查找超过24小时的文件/home/foo/backups。它们被删除了。

0,30 * * * * find /home/foo/backups -mindepth 1 -type d -empty -delete

每天0.30,它会查找/home/foo/backups的空子目录。它们被删除了。

答案 1 :(得分:0)

删除文件find / your-path -mtime -1 -print | xargs rm -f

答案 2 :(得分:0)

编辑问题以添加所有cron任务并意识到问题是按任务顺序排列的。

备份需要在删除任务运行之前创建,否则文件夹将为空并将被删除,备份将无法创建。 D'哦!