A continuation of development on zxfer, a popular script for managing ZFS snapshot replication
The Original author seems to have abandoned the project, there have been no updates since May 2011 and the script fails to work correctly in FreeBSD versions after 8.2 and 9.0 due to new ZFS properties.
For now, most of the documentation will reside at the original page, until someone reorganizes it.
Implement new -D parameter, allows you to put a progress indicator app between the zfs send and zfs receive. Provides macros %%size%% and %%title%%. Example usage:
-D 'bar -s %%size%% -bl 1m -bs 256m'
Ignore new read-only properties added in FreeBSD 9.1: 'written' and 'refcompressratio'
Ignore new read-only properties added in FreeBSD 9.2/8.4: 'logicalused' and 'logicalreferenced'
"Unsupported Properties" support, do not copy properties that are unsupported by the destination pool. Allows replication from 11-CURRENT to 9.2 etc, by automatically ignoring new properties such as: volmode, filesystem_limit, snapshot_limit, filesystem_count, snapshot_count, redundant_metadata
Fixed -o mountpoint=foo , it is no longer ignored as readonly if explicitly requested by the user
Implemented new -I parameter, ignore these properties and do not try to set them
Implemented new -U parameter, do not try to replicate unsupported properties, to skip properties that the destination does not understand
You will need to be root before starting.
Via pkg (Recommended)
pkg install zxfer
a) Go to ports directory.
# cd /usr/ports/sysutils/zxfer
# make install
Here are the directions for those who want to do it manually. a) Copy zxfer to /usr/local/sbin.
# cp zxfer /usr/local/sbin
b) Copy zxfer.8.gz to /usr/local/man/man8
# cp zxfer.8.gz /usr/local/man/man8
As the freenas file system is not persistent for user changes, we will need to;
a) Create a standard jail via the freenas UI
b) Add the datasets required for the transfer to the jail via the jails storage manager in the UI
c) Use either the pkg or port methods above to install zxfer
all instructions for the above can be found here
OpenSolaris, Solaris 11 Express:
a) Copy zxfer to /usr/sfw/bin.
# cp zxfer /usr/sfw/bin
b) Set the path to include this.
c) Copy zxfer.1m to /usr/share/man/man1m
# cp zxfer.1m /usr/share/man/man1m
d) Delete the old catman page, if you are updating.
# rm /usr/share/man/cat1m/zxfer.1m
e) Set the MANPATH variable correctly.
Note that this will not set the paths permanently.
(I don't know how. If you know how, please inform me.)