From 8a93a61ca9468ad1bab1d6807a2ac4d701942565 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 2 Aug 2026 12:07:34 +0200 Subject: [PATCH] Release version 3.4.0 --- CHANGELOG.md | 15 +++++++++++++++ pyproject.toml | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddd73e0..2e94678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [3.4.0] - 2026-08-02 + +- Backup: *-a* implies *-D*, so a generation was written with + *--devices --specials* and rsync recreated every unix socket and fifo found in + a volume. Where the backup root is an nfs-ganesha export, ganesha accepts the + socket on write but cannot serve it back, and the remote pull's sender then + fails with *readdir* / *readlink_stat* "Invalid argument (22)" and exits 23 — + deterministically, for every retry. *--no-D* keeps them out of the generation. +- Backup: nothing restorable is lost. Sockets and fifos are recreated by the + daemons that own them, and the postfix queue itself — *incoming*, *active*, + *deferred*, *hold*, *maildrop* — is unaffected, so accepted-but-undelivered + mail stays in the backup. Device nodes go too; the only volume that could hold + them is a nested docker data root, which does not belong in a backup anyway. +- Tests: the flag is asserted on the rsync invocation. + ## [3.3.0] - 2026-08-02 - Backup: *--volumes-no-backup-required* excludes a volume by name. diff --git a/pyproject.toml b/pyproject.toml index f29cfa6..3721c19 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "backup-docker-to-local" -version = "3.3.0" +version = "3.4.0" description = "Backup Docker volumes to local with rsync and optional DB dumps." readme = "README.md" requires-python = ">=3.9"