【发布时间】:2017-09-13 14:04:35
【问题描述】:
这是我备份的结构:
- 备份存储到名为
cron_hourly_backup的目录中 - 在该目录中,每天都会创建一个目录,以
ddmmyyyy格式命名。 - 在每个目录中都有 5-6 个数据库备份,每小时通过 cron 作业转储,并且每小时的备份文件通过使用时间戳具有唯一的名称(例如:
db1_000000.zip .... db5_000000.zip到db1_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 小时备份,那么我将丢失当天的所有文件。
- 它还会删除今天和昨天的备份。
非常感谢任何有关如何解决上述 2 个问题的建议。
【问题讨论】:
-
创建后有什么修改它们的吗?
find . -type f -name "db*" -mtime +1 -delete? -
不,但是有 5-6 分贝,所以我使用 * 将它们全部包含在内
-
好的,所以我可以使用 -mtime 来解决我的第二个问题。 1st有什么解决办法吗?我想检查每天最新的数据库,并删除所有剩余的备份。
-
我认为如果不编写脚本来做到这一点,这将很棘手。在你的 find 命令中使用带有
-exec的技巧可能会变得难以阅读
标签: bash ubuntu backup-strategies