Efficient recursive send using syncoid

I have a dataset with 1000+ child datasets. Fortunately, all those datasets can be snapshotted very quickly by setting recursive=zfs in sanoid. Unfortunately, it takes about half an hour for syncoid to run when almost no data has changed, because it needs to sync datasets one by one.

ZFS send has a recursion flag which I believe will transfer all child datasets in one go. Is there any way to use this with syncoid? In would rather not do manual send/recv, syncoid is very convenient :slight_smile:

You can use the --sendoptions argument for syncoid to send a “-r” to zfs send, rather than using syncoid’s internal recursion algorithm. But I don’t think it’ll get you the big performance wins you’re going for (and it will introduce some serious fragility into your routine; zfs internal recursive send works fine for STATIC collections of datasets, but will break in a lot of annoying cases involving changes to the datasets present on source or target).

Yes, syncoid has a recursive flag. You can check the features out with man syncoid, but I believe the appropriate flag is -r.