mirror of
https://github.com/kevinveenbirkenbach/docker-volume-backup.git
synced 2026-08-01 12:34:50 +00:00
Release version 3.2.0
This commit is contained in:
26
CHANGELOG.md
26
CHANGELOG.md
@@ -1,5 +1,31 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [3.2.0] - 2026-07-31
|
||||||
|
|
||||||
|
- Backup: *--snapshot {btrfs,zfs}* with *--snapshot-subject* captures every
|
||||||
|
volume from one atomic filesystem snapshot. The subject — the btrfs subvolume
|
||||||
|
or zfs dataset holding the docker volumes, e.g. */var/lib/docker* — is frozen
|
||||||
|
once per run, so a generation shares a single point in time and no container
|
||||||
|
is stopped. Restoring such a copy is an ordinary crash recovery, which every
|
||||||
|
supported engine performs at startup. This is the mode 3.1.4 pointed to for
|
||||||
|
volumes where two rsync passes over a live tree stop being affordable.
|
||||||
|
- Backup: snapshot passes copy once and drop *--checksum*. Verification exists
|
||||||
|
because a hot pass writes its destination from a moving source; a snapshot
|
||||||
|
source cannot move, so size and mtime cannot race and the second full read is
|
||||||
|
pure cost.
|
||||||
|
- Backup: an unsupported filesystem or unknown kind fails with *SnapshotError*.
|
||||||
|
The kind is stated, not probed — an inconclusive probe would fall back to a
|
||||||
|
live copy and hand out the torn backup the mode prevents. *--shutdown* is
|
||||||
|
rejected alongside *--snapshot* rather than ignored, since nothing is stopped.
|
||||||
|
- Refactor: *backup/app.py* splits into *layout.py*, *policy.py* and *dumps.py*
|
||||||
|
along the lines it already had; 276 lines down to 124.
|
||||||
|
- Tests: unit coverage for snapshot, layout, policy, volume and CLI validation.
|
||||||
|
E2E cases drive real btrfs, zfs and ext4 on loop devices, one proving the
|
||||||
|
loud refusal; another writes a MariaDB across the snapshot and requires the
|
||||||
|
restored server to recover on its own with every committed row and none of
|
||||||
|
the later ones. CI installs zfs and sets *E2E_REQUIRE_FILESYSTEMS*, so a
|
||||||
|
missing kernel module fails the build instead of skipping a filesystem.
|
||||||
|
|
||||||
## [3.1.4] - 2026-07-31
|
## [3.1.4] - 2026-07-31
|
||||||
|
|
||||||
- Backup: the post-stop volume pass now compares by content (*--checksum*), so
|
- Backup: the post-stop volume pass now compares by content (*--checksum*), so
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "backup-docker-to-local"
|
name = "backup-docker-to-local"
|
||||||
version = "3.1.4"
|
version = "3.2.0"
|
||||||
description = "Backup Docker volumes to local with rsync and optional DB dumps."
|
description = "Backup Docker volumes to local with rsync and optional DB dumps."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
|
|||||||
Reference in New Issue
Block a user