All notable changes to pyznap will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added resumable send/receive.
Use the
resume
option in the config file or the-r
flag forpyznap send
. - Added options
dest_auto_create
,retries
andretry_interval
.
- Added zfs raw send for encrypted or compressed datasets.
Use the
raw_send
option in the config file or the-w
flag forpyznap send
.
- pyznap would falsely assume executables such as 'pv' exist on SmartOS even when not present.
- Catch DatasetNotFoundError if dataset was destroyed after starting pyznap.
- Close stderr to detect broken pipe.
- Raise CalledProcessError if there is any error during zfs receive.
- You can now exclude datasets when sending using Unix shell-type wildcards.
Use the
exclude
keyword in the config or the-e
flag forpyznap send
.
- pyznap can now pull data over ssh, i.e. you can now send form local to local, local to remote, remote to local and remote to remote. Note that remote to remote is not direct, but via the local machine.
pv
now outputs status once per minute when stdout is redirected (e.g. to a file).
- Rewrote local/remote 'zfs send' commands in a more uniform manner.
- Enforce python>=3.5 in setup.py.
- Removed
configparser
dependency.
- pyznap now uses compression for sending over ssh. Current supported methods are
none
,lzop
(default),lz4
,gzip
,pigz
,bzip2
andxz
. There is a new config option (e.g.compress = none
) and a new flag-c
forpyznap send
. mbuffer
is now also used on the dest when sending over ssh.
- Rewrote how commands are executed over ssh: Implemented own SSH class, removed paramiko dependency.
- General code cleanup.
- Send would fail on FreeBSD due to missing stream_size.
- Catch KeyboardInterrupt exceptions.
- Code cleanup.
- Changed frequency of 'frequent' snapshots to 1 minute. Interval at which 'frequent' snapshots are taken can be controlled by cronjob. This allows users to take snapshots at different intervals (1min, 5min, 15min, ...).
- Code cleanup in process.py. No more overwriting of subprocess functions.
- Fixed pv width to 100 chars.
- pyznap now uses
pv
to show progress of zfs send operations. - Better error handling during zfs send over ssh.
- Changed readme to only mention python 3.5+.
- More verbose error messages when CalledProcessError is raised.
- Send over ssh would fail with OSError if dataset has no space left.
- pyznap now checks if the dest filesystem has a 'zfs receive' ongoing before trying to send.
- Added more helpful error message when source/dest do not exist.
- Added a changelog.
- Fixed bug where ssh connection would be opened but not closed if dataset does not exist.
- Added tests to test pyznap running over time.
- Code cleanup.
- Changed some docstrings.
- Extended Readme.
- Fixed multiline ZFS errors not being matched.
- Logging was writing to stderr instead of stdout.
- First release on PyPI.