我正在寻找一个可以修剪我的备份文件的工具(适用于 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