
У меня есть куча docker-контейнеров, содержащих разные базы данных. Для каждого контейнера есть Jenkins-Job, который ежедневно делает резервную копию базы данных в виде .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-файл.
Теперь я ищу способ просто хранить diffs .sql-файлов. Есть несколько вопросов (здесьиздесьfor example) приводит к rdiff-backup как хорошему инструменту для этого. Но мне кажется, что rdiff-backup предназначен для работы с целыми папками, например, папкой, где база данных хранит свои данные, а не с самими файлами sql.
Есть ли инструмент для хранения независимого от базы данных init .sql-файла и оттуда только различий?
решение1
Вы можете использовать другой подход, используя zpaq. Вы можете найти на FreeBSD (очень старая версия), Debian (обновленная) или непосредственно на сайте автора http://mattmahoney.net/dc/zpaq.html
Вы получите один файл со всеми необходимыми вам SQL-кодами, сохраненными внутри, опционально зашифрованными.