删除超过 7 天的备份(每个月的第一天除外)

gue*_*est 3 linux backup centos rm

我想删除超过 7 天的备份,但保留每月第一天的备份。

文件的名称是:name_$(date +\%d\%m\%Y).tar.gz

我想保留:name_$(date +\01\%m\%Y).tar.gz

我想要这样的东西:

find /path -mtime +8 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

我可以融入哪里name_$(date +\01\%m\%Y).tar.gz

也许使用--exclude name_$(date +\01\%m\%Y).tar.gz

我正在寻找单行命令。

不需要子目录。

用 echo 尝试了一下,效果不好,但显示了 01 的一些内容。

只是--exclude不起作用:command not found

B. *_*hea 5

这在 Debian/Ubuntu 下适用于我(并且应该在大多数情况下适用):

\n\n

例如,如果您有以下格式的文件:

\n\n

mybackup_ 12-01-2015 .tar.gz

\n\n
 $ find ./* -name 'mybackup_??-01-*' -prune -o -mtime +7 -exec ls {} \\;\n
Run Code Online (Sandbox Code Playgroud)\n\n

命令:

\n\n
    \n
  • 查找从当前文件夹开始的所有文件
  • \n
  • 修剪(忽略/排除)具有“01”日期匹配的文件
  • \n
  • 并且仅包含 \xe2\x89\xa57 天的文件 (mtime)
  • \n
  • 执行ls以显示剩下的内容。
  • \n
\n\n
\n

如果您想在测试命令后删除它们,只需替换lsrm.

\n
\n\n

当您对命令感到满意时,它也可以很好地用作 cron 任务/作业。我让它每几个月执行一次我的脚本。(我的脚本使用+90天的mtime来清理mysql备份)

\n