随着备份文件变旧,对其进行修剪

随着备份文件变旧,对其进行修剪

我正在寻找一个可以修剪我的备份文件的工具(适用于 Linux),不像标准工具logrotate那样在定义的轮换次数后完全删除它们,而是基本上永久保存文件,只是随着文件越来越旧而被修剪。例如:

  • 第一个月我想保留每一个每日备份文件
  • 此后,我只想在接下来的 6 个月内保留每周备份
  • 此后,我只想再保留 6 个月的每月备份
  • 此后我只想保留季度备份

是否存在这样的基于时间的文件清理工具?

它可以查看文件名中的日期,也可以查看文件的时间戳(但并不理想)。

答案1

我不知道有这样的工具,通常它包含在您的备份软件中。您使用什么备份工具?

我会推荐快照 这可以配置为执行您要求的这些智能操作,并通过广泛使用硬链接来保持较小的备份大小。

但是如果你有自己的 cronjobs/系统来创建备份,你可以再创建几个计划任务

  • 备份至“每日文件夹”
  • 每周执行一次 cronjob,将 30 天前的文件从每月文件夹移动到“每周文件夹”find /path/to/daily -maxdepth 1 -mtime +30 -type f -exec mv "{}" /path/to/weekly/ \;

    因为下面的 cronjob 将删除旧文件,所以这将只是一天的备份文件。

  • 有一个每日 cron 任务,从每日文件夹中删除超过 30 天的文件(确保它在上述每周 cron 之后运行)find /path/to/daily/* -mtime +30 -exec rm {} \;

重复从每周到每月,再从每月到每季度

答案2

这个问题相当老了,但由于这是此类搜索的第一个结果,我建议博格作为您的备份选项,因为它通过其修剪命令。

从其文档中的一个示例来看:

# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-' prefix is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:

borg prune                      \
--list                          \
--prefix '{hostname}-'          \
--show-rc                       \
--keep-daily    7               \
--keep-weekly   4               \
--keep-monthly  6               \

答案3

您也应该研究一下“重复”软件。

它的声誉很好;并且(独立地)我正在使用它,并且我很满意。

答案4

这是我遇到的一个问题,但找不到解决方案。我在我的服务器上生成了大量备份文件,并使用 gzip 压缩配置。最后我编写了一个解决方案。

https://github.com/BinaryPatrick/Prune

它使用与以下相同的修剪逻辑:Proxmox 的备份服务器,并在命令行中运行。我使用以下命令为 linux-x64 编译了它,然后从 cron 作业在服务器上运行它。

dotnet publish --runtime linux-x64 --self-contained -p:PublishSingleFile=true -c Release -o ./out/linux-x64
prune --path /mnt/backup/images \
      --ext img                 \
      --keep-last 3             \
      --keep-daily 3            \
      --keep-weekly 2           \
      --keep-monthly 2

相关内容