按日期对备份进行分组的脚本,然后删除早于 X 天的文件+文件夹

按日期对备份进行分组的脚本,然后删除早于 X 天的文件+文件夹

我们有 30 天的备份 = 30 个文件夹,备份每小时运行一次,因此在每个文件夹中,每个文件夹中有 24 个文件。我们需要运行一个保留文件的五个最新日期的脚本。

例如,如果今天是 6 月 30 日,我运行该脚本,则无论 6 月 25 日、6 月 26 日、6 月 27 日、7 月 28 日、7 月 29 日文件夹中有多少文件,它都会保留所有五个文件夹,并且仅删除其中的文件夹6 月 24 日及以上。

如果备份任务创建了一个空的 zip 文件,也最好跳过数据 < 10kb 的文件夹。

到目前为止我一直在测试的内容:

find /files/ -ctime +5 -printf "%TY-%Tm-%Td\n" | sort -u -r | tail -n+5 | xargs rm -R

-ctime +5 = which files we want to expire created more than 5 days ago,
-printf "%TY-%Tm-%Td\n" outputs the dates of the folders so we can sort them
sort -u -r = sorting the output so we can do tail
tail -n +5 = tail skips the 5 newest filegroups: grouped by date, not just 5 newest files

这个逻辑正确吗?我还需要某种 xarg 在“旧备份”的结果列表上执行“rm -R”。

提前致谢!

相关内容