我有这些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,前一天有备份。
上面的语法出了什么问题?
答案 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'哦!