Changes¶
Roadmap¶
Sub-command for borrowing / lending a dataset temporarily to another zpool/machine while freezing it on the source
Sub-command for moving a dataset and its backup to other machines
Sub-command similar to
git branchwhich creates a new dataset from a snapshot and optionally detaches itSub-command which (very poorly) mimics
git merge --squash, possibly relying onrsyncResuming interrupted sending transactions, see receive_resume_token
Some kind of light-weight native GUI, i.e. no Web or Electron application
Translations / internationalization
Python API around the Rust core crate for advanced scripting usage or integration into third-party web applications
0.2.0 (2026-XX-XX)¶
CAUTION: Deployment, CLI and configuration changed, BREAKING BACKWARDS COMPATIBILITY for all use-cases!
Complete Rust-rewrite, resulting in a fully statically linked, portable binary. Other than copying the binary somewhere into PATH, no further installation steps are required. Compatible with and tested on Linux and FreeBSD.
Most configuration is handled via ZFS properties on datasets and can be overridden with environment variables. The formerly required YAML configuration file has become optional and now only covers the definition of location aliases. SSH-specific options have been removed entirely and are left to SSH configuration.
Locations take over as a powerful concept to describe sources and targets for operations, including multiple hop ssh connections, specific user accounts and root datasets.
Renamed CLI sub-commands:
clean:freetree:lswith overall more functionalitysnap: unchangedbackup:sync
Features (yet) missing compared to 0.1:
initsub-commandtranslation (i18n)
GUI
Python API
Peaceful coexistence with
zfs-auto-snapshotCleanup on target side
Other:
FEATURE: FreeBSD support, assuming OpenZFS
FEATURE: All commands can produce JSON output with
-j.FEATURE: Locations strings including routes, user names and root datasets
FEATURE: Snapshot names based on custom format strings
FEATURE: Built-in support for optional
xz-compressed transfersFEATURE: Optional bandwidth limit on transfers to avoid congestion in overall bandwidth-limited settings
FEATURE: Optional insecure but fast transfers via
ncDEV: Test suite running on dedicated VMs, both Linux and FreeBSD
As of this version, this re-implemented project is re-licensed from the GNU Lesser General Public License to a dual-model of MIT and Apache 2.0 licences.
0.1.1 (2026-03-28)¶
FIX: Read The Docs build
0.1.0 (2026-03-28)¶
CAUTION: The configuration layout changed, effectively BREAKING BACKWARDS COMPATIBILITY for most use-cases!
With this release, the Python implementation is sunset and may only receive bugfixes. For new deployments, please use the Rust-reimplementation as of version >= 0.2.
The keep_backlog configuration parameter, which could previously be both a boolean and an integer, is now only allowed to be an integer. If no snapshots shall be kept on the target side, it must now be set to 0. If all snapshots shall be kept on the target side (default behavior), it must now be set to -1. Arbitrary numbers greater than 0 remains unaffected by this change.
abgleich will use semantic versioning from now on. Breaking changes will be indicated by increasing the second version number, the minor version. Going for example from 0.0.x to 0.1.y or going from 0.1.x to 0.2.y therefore indicates a breaking change.
FEATURE:
abgleichcan be initialized i.e. told to generate an initial configuration via a simple CLI wizard by runningabgleich init {filename}.yaml.FEATURE: Introduced a debug mode, activated by setting the
ABGLEICH_DEBUGenvironment variable to1. Debug features were previously hard-coded activated, makingabgleichnow with debug features deactivated by default much faster.FIX: Improved error handling by not passing snapshots failed to send completely to stdout.
DEV: Moved from
setuptoolsfor packaging topyproject.tomlviaflit.DEV: Added rudimentary test suite.
0.0.8 (2022-01-21)¶
FEATURE:
zfs-auto-snapshotcan be told to ignore backup datasets on the target side, see #3.FEATURE:
sambacan optionally be told to NOT share/expose backup datasets on the target side, see #4.FEATURE:
ssh-port on source and target becomes configurable, see #22.FEATURE: New configuration fields for
sourceandtargeteach:processing. They can carry shell commands for pre- and post-processing of data before and after it is transferred via ssh. This enables the use of e.g.lzmaorbzip2as a custom transfer compression beyond the compression capabilities ofsshitself. See #23.FEATURE:
abgleich cleancan also remove snapshots ontargetbut only if they are not part of the current overlap withsource. The behavior can be controlled via the newkeep_backlogconfiguration option, see #24 and #25.FEATURE: Configuration module contains default values for parameters, making it much easier to write lightweight configuration files, see #28. The configuration parser now also provides much more useful output.
FEATURE:
abgleich treeandabgleich comparehighlight ignored datasets.FEATURE: Significantly more flexible shell command wrapper and, as a result, cleaned up transaction handling.
FEATURE: Python 3.9 and 3.10 compatibility.
FIX: Many cleanups in code base, enabling future developments.
0.0.7 (2020-08-05)¶
FIX:
treenow properly checks if source or target is up, depending on what a user wants to see, see #20.FIX: All
abgleichcommands can properly initialize (instead of crashing) if the target tree is empty, see #19.FIX:
treeshows message if there is no tree instead of crashing, see #18.
0.0.6 (2020-07-24)¶
FIX: Development installs with
make installdo no longer fail, see #17.FIX: Python up to 3.7.1 does not handle type checks for
OrderedDictproperly and either causes exceptions or crashes. Fixed with workaround, see #16.
0.0.5 (2020-07-24)¶
FEATURE: Version shown in GUI
FEATURE: Version exposed through
--versionoption on command lineFEATURE: While
{zpool}{/{prefix}}is included in all operations by default, this can be deactivated by setting the newinclude_rootconfiguration option tono, see #14.FIX: If a remote host is not up, provide a proper error and fail gracefully, see #15.
0.0.4 (2020-07-22)¶
FEATURE: Improved labels in wizard GUI
FEATURE: Significantly improved German translation
FIX: Importing
CLoaderandCDumperfrompyyamlcaused crashes if they were not present inpyyamlpackages, see #2.FIX: The
mountpointproperty of ZFS datasets is no longer assumed to be present at all (set or unset). This allows to handle ZVOLs without crashing, see issue #6.FIX: Versions 0.0.2 and 0.0.3 were completely ignoring ZVOLs when looking for snapshot tasks, see issue #10.
0.0.3 (2020-07-19)¶
FEATURE: Added wizard GUI for backup tasks (
snap,backup,cleanup)FEATURE: Added new configuration options (
always_changed,written_threshold,check_diff) for detecting snapshot tasksFEATURE: CLI and GUI translations (i18n)
FIX: Added missing type checks
0.0.2 (2020-07-14)¶
FEATURE: New, fully object oriented base library
FEATURE: Python 3.8 support added
FIX:
cleanupdoes not delete snapshots on source if they are not present on target.FIX: Wait for ZFS’s garbage collection after
cleanupfor getting a meaningful value for freed space.Dropped Python 3.5 support
0.0.1 (2019-08-05)¶
Initial release.