【问题标题】:deleting old files using crontab使用 crontab 删除旧文件
【发布时间】:2011-07-19 12:36:34
【问题描述】:

我使用以下 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 记录,该记录将删除超过一个月的数据库转储。

有什么想法吗?

【问题讨论】:

  • @knittle logrotate 用于日志(?)
  • 虽然 logrotate 可以删除一定年龄的文件,但它只对它旋转的文件进行操作;不是数据库备份的典型场景。当然,您可以将 find ... -exec rm {} \; 命令(记录在其他答案中)作为脚本添加到 logrotate 配置中。这在某些情况下可能有用; example in last entry of a conversation thread on another forum

标签: linux crontab


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    只需创建另一个 cron:

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

    它将查找所有超过 30 天的备份并将其删除。

    【讨论】:

    • 我们可以将要删除的文件名写入文件以供参考。
    • 当然,您可以使用rm -vfind -print 来输出正在删除的文件的名称。
    【解决方案3】:
    find /db_backups/ -mtime +30 -delete
    

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

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多