这是我备份的结构:
- 备份存储到名为
cron_hourly_backup
- 在该目录内,每天都会创建一个以
ddmmyyyy
格式命名的目录。 - 在这些目录中的每一个中,都有 5-6 个 db 备份,这些备份通过 cron 作业每小时转储,并且每小时的备份文件通过使用时间戳具有唯一的名称(例如:
db1_000000.zip .... db5_000000.zip
uptodb1_230000.zip ... db5_230000.zip
)
现在我想以编程方式删除所有早于 1 天的备份文件(或者,保留今天和昨天的所有备份),但每天保留一个最新的数据库(所有 5 个数据库)。我怎样才能做到这一点?
目前我正在这样做:
find . -type f \( -name "*_00*" \
-o -name "*_01*"-o -name "*_02*" \
-o -name "*_03*" -o -name "*_04*" \
-o -name "*_05*" -o -name "*_06*" \
-o -name "*_07*" -o -name "*_08*" \
-o -name "*_09*" -o -name "*_10*" \
-o -name "*_11*" -o -name "*_12*" \
-o -name "*_13*" -o -name "*_14*" \
-o -name "*_14*" -o -name "*_15*" \
-o -name "*_16*" -o -name "*_17*" \
-o -name "*_18*" -o -name "*_19*" \
-o -name "*_20*" -o -name "*_21*" \
-o -name "*_22*" \) -delete
这很好用,问题是
- 如果任何一天都没有 23 小时备份,那么我将丢失当天的所有文件。
- 它还将删除今天和昨天的备份。
非常感谢任何有关如何解决上述两个问题的建议。