When zfs send -R is interrupted, some child filesystems will be at a
more recent snapshot than their parent. There's then no way to do a
zfs send -R from the root/parent, as the children are inconsistent.
Catchup mode handles recursion on its own, instead of relying on zfs to
do it. Basically picking a single consistent snapshot across the board,
then bringing all to that level.
Previously we looked for the specific tagged snapshot, but that doesn't
actually work properly. Now simply find the most recent snapshot on dest
and compare to src. It must exist on src.
Execution should not continue upon failure of certain zfs commands. In
particular, cleanup/rotation of the oldest snapshots will no longer
occur upon a failure to send/receive.
Change zfs receive command to use -e (was -d).
Allow greater control of dest placement. srcpool/a/really/long/path
should not force me to deal with destpool/backupdest/a/really/long/path.
* supports either local or remote usage
* always uses sudo
* getopts for a few settings
* keeps its own snapshots for send/recv purposes, independent of others