我有一堆包含不同数据库的 docker 容器。每个容器都有一个 Jenkins 作业,它每天将数据库备份为 .sql 文件,然后压缩此文件。你可以想象,随着时间的推移,这会导致大量冗余数据:
-rw-r--r--. 1 admin admin 103475967 30. Aug 02:15 20210830021501_all-databases.sql.gz
-rw-r--r--. 1 admin admin 103475967 31. Aug 02:15 20210831021501_all-databases.sql.gz
-rw-r--r--. 1 admin admin 103475967 1. Sep 02:15 20210901021501_all-databases.sql.gz
通常你会使用特定于数据库的滚动备份工具。但我希望通过仅导出 .sql 文件来保持简单和通用。
现在我正在寻找一种方法来存储 .sql 文件的差异。有几个问题(这里和这里例如)导致 rdiff-backup 成为一个很好的工具。但对我来说,rdiff-backup 似乎被设计用于处理整个文件夹,例如数据库存储数据的文件夹,而不是 sql 文件本身。
是否有一个工具可以存储数据库独立的初始化.sql文件并且从那里只存储差异。
答案1
您可以使用不同的方法,使用 zpaq。您可以在 FreeBSD(非常旧的版本)、Debian(更新)或直接从作者的网站上找到 http://mattmahoney.net/dc/zpaq.html
您将获得一个包含所有所需 SQL 的单独文件,存储在其中,可选择加密