通过几个步骤修剪旧备份

Fly*_*ard 6 linux backup

我正在寻找一种方法来精简旧备份。备份每天运行,我想随着备份变旧而增加间隔。

几天后,我想删除每日备份,只留下“周日”备份。几周后,仅应删除一个月中可用的第一个备份。

由于我正在处理历史备份,因此我不能只更改命名方案。

我尝试使用“查找”来查找,但找不到正确的选项。

有人有什么可以帮忙的吗?

sar*_*old 5

我知道这是历史数据,但您可能更喜欢提出一个命名方案来解决这个问题。通过两遍解决这个问题可能要容易得多:首先,根据日期重命名目录,然后选择将来要保留的目录。

ls -l如果输出中的所有目录日期看起来足够好,您可以进行快速近似:

ls -l | awk '{print "mv " $8 " "  $6;}' > /tmp/runme
Run Code Online (Sandbox Code Playgroud)

看看/tmp/runme,如果看起来不错,你可以用 来运行它sh /tmp/runme。您可能希望修剪条目或类似的内容,这取决于您。

如果所有备份都存储在名为的目录中,例如:

2011-01-01/
2011-01-02/
2011-01-03/
...
2011-02-01/
2011-02-02/
...
2011-03-07/
Run Code Online (Sandbox Code Playgroud)

那么你的问题将减少到计算要保留和删除的名称。这个问题比搜索所有文件并尝试根据文件的创建时间选择保留和删除哪些文件要容易得多。(有关date "+%Y-%m-%d"生成此类名称的快速方法,请参阅输出。)

一旦方便地命名它们,您就可以使用如下脚本保留每个月的第一个备份:

for y in `seq 2008 2010`
    do for m in `seq -w 1 12`
            do for d in `seq -w 2 31`
                    do echo "rm $y-$m-$d"
            done
    done
done
Run Code Online (Sandbox Code Playgroud)

保存其输出,检查它:),然后运行输出,类似于重命名脚本。

一旦您控制了过去的备份,您就可以生成2010fromdate --date="Last Year" "+%Y"和其他改进,以便它可以处理当前月份的“每周一次”并永远保持下去。