每隔 >= 24 小时,我的系统都会对(PostgreSQL)数据库进行一次完整备份,并将生成的文件放入如下文件目录中:
MyLifeDatabase 2022-12-01 12;00;00.pg_dump
MyLifeDatabase 2022-12-02 14;00;00.pg_dump
MyLifeDatabase 2022-12-03 12;00;00.pg_dump
MyLifeDatabase 2022-12-04 11;00;00.pg_dump
MyLifeDatabase 2022-12-05 12;00;00.pg_dump
MyLifeDatabase 2022-12-06 13;04;00.pg_dump
(我暂时使用“;”而不是“:”的原因是 Windows/NTFS 不允许文件名中包含冒号。)
这些很快就会累积起来,特别是当这些都被复制到备份磁盘时。这真是太浪费了。
因此,我开始自动删除该目录中所有“创建时间”超过 6 个月的文件。但现在我有太多“接近”的备份,尽管需要每天(至少)进行备份才能使最新的备份始终保持最新状态……
因此,基本上,我希望智能地删除文件,以便如果文件超过 1 个月,则每周只有一个文件,如果文件超过 3 个月,则每月只有一个文件。或者类似的合理规则。
但这是我无法想象如何完成的事情之一。对于人类来说,查看文件名并决定“剔除”哪些文件很容易(但非常乏味),但当你几乎不知道如何手动操作时,告诉计算机实际过程的细节却很困难。
我不需要实际代码方面的帮助,只需要关于如何最好地完成此操作的“理论”。这似乎应该是一个常见且“已解决”的问题。
注意:我知道“连续备份”的概念,但每次我尝试设置它时,我都会因为精神疲惫而瘫倒在椅子上,然后什么也没发生;我目前的备份方案仍然存在,这总比没有好,即使我可能会丢失一整天的数据库事件。但即使我弄明白了这一点,我仍然希望每天进行一次完整备份,只是为了冗余,或者不信任“连续备份”。