gpt4 book ai didi

bash - 删除所有早于 X 天的文件,但至少保留 Y 最年轻的文件

转载 作者:行者123 更新时间:2023-11-29 08:55:19 25 4
gpt4 key购买 nike

<分区>

我有一个脚本可以从备份目录中删除早于 X=21 天的数据库转储:

DB_DUMP_DIR=/var/backups/dbs
RETENTION=$((21*24*60)) # 3 weeks

find ${DB_DUMP_DIR} -type f -mmin +${RETENTION} -delete

但是如果由于某种原因数据库转储作业在一段时间内无法完成,所有转储最终都会被丢弃。因此,作为保障,我想至少保留最年轻的 Y=7 个转储,即使所有转储或其中一些转储超过 21 天。

我在寻找比这个意大利面条更优雅的东西:

DB_DUMP_DIR=/var/backups/dbs
RETENTION=$((21*24*60)) # 3 weeks
KEEP=7

find ${DB_DUMP_DIR} -type f -printf '%T@ %p\n' | \ # list all dumps with epoch
sort -n | \ # sort by epoch, oldest 1st
head --lines=-${KEEP} |\ # Remove youngest/bottom 7 dumps
while read date filename ; do # loop through the rest
find $filename -mmin +${RETENTION} -delete # delete if older than 21 days
done

(这个片段可能有小错误 - 忽略它们。这是为了说明我自己能想出什么,以及为什么我不喜欢它)

编辑:查找选项“-mtime”是一次性的:“-mtime +21”实际上意味着“至少 22 天”。这总是让我感到困惑,所以我改用 -mmin 。仍然是一次性的,但只有一分钟。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com