mirror of
https://github.com/kevinveenbirkenbach/docker-volume-backup.git
synced 2026-11-06 02:57:59 +00:00
feat(backup): write database dumps gzip-compressed
Dumps stream through gzip into <db>.backup.sql.gz; no uncompressed copy touches the disk. Restore reads gzip and plain dumps by their magic bytes, verifies a gzip dump to its end before anything is dropped, and still finds the uncompressed names of older generations. The manifest names the compression. 🎯 Fix: 92 % 💥 Break: 20 % 💸 Cost: – ⏱️ Time: – 🛡️ Security: ~100 % 🏆 Score: 74 🚦 Gate: ⛔ break 20 % > 5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
328520169b
commit
b30344d494
34 files changed
+833
-110
No files matched your search
@@ -13,6 +13,8 @@ from baudolo.generation import (
|
||||
CLUSTER_SUFFIX,
|
||||
DUMP_SUFFIX,
|
||||
FILES_DIR,
|
||||
LEGACY_CLUSTER_SUFFIX,
|
||||
LEGACY_DUMP_SUFFIX,
|
||||
MANIFEST_FILE,
|
||||
MANIFEST_SCHEMA,
|
||||
SQL_DIR,
|
||||
@@ -30,9 +32,19 @@ class TestManifestDocument(unittest.TestCase):
|
||||
"sql_dir": SQL_DIR,
|
||||
"dump_suffix": DUMP_SUFFIX,
|
||||
"cluster_suffix": CLUSTER_SUFFIX,
|
||||
"dump_compression": "gzip",
|
||||
},
|
||||
)
|
||||
|
||||
def test_dumps_are_named_as_gzip_and_the_legacy_names_stay_known(self) -> None:
|
||||
self.assertEqual(DUMP_SUFFIX, ".backup.sql.gz")
|
||||
self.assertEqual(CLUSTER_SUFFIX, ".cluster.backup.sql.gz")
|
||||
self.assertEqual(LEGACY_DUMP_SUFFIX, ".backup.sql")
|
||||
self.assertEqual(LEGACY_CLUSTER_SUFFIX, ".cluster.backup.sql")
|
||||
|
||||
def test_the_schema_stays_one_so_existing_readers_keep_reading(self) -> None:
|
||||
self.assertEqual(MANIFEST_SCHEMA, 1)
|
||||
|
||||
def test_it_carries_a_schema_so_a_reader_can_refuse_a_newer_one(self) -> None:
|
||||
self.assertEqual(manifest_document({})["schema"], MANIFEST_SCHEMA)
|
||||
|
||||
|
||||
Reference in new issue
Block a user