Backup ZFS from ssh server to client behind Firewall

Well, unfortunately you will have to set up ssh on the client - but it wont need to be publicly accessible(sorta)

I recommend using the Key based sshd setup for client, described in previous post here.

on host/server(target to backup):

$sudo zfs snapshot -r zroot@snapname

zroot is default zpool for a freebsd install

on client(the backup):

$sudo zfs allow -u username compression,mountpoint,create,mount,receive backuppool

Above is assuming you didnt enable root login and dont plan on logging in as root.

$sudo service sshd onestart

$YOURSECUREPORT is what ever port you normally use for your server(not one you just set up) and $YOURLOCALSSHPORT is whatever port you just setup(client).

$ssh -i ./.ssh/id_rsa_yourserver -p $YOURSECUREPORT -f -N -T -R 2022:localhost:$YOURLOCALSSHPORT [email protected]

back on backup target/host server:

$sudo zfs send -R zroot@snapname | ssh -t clientusername@localhost -p 2022 zfs recv backuppool/backupname -o mountpoint=/srv

There will be some issues with setuid and exec permissions, but data will be mostly backed up - you could solve this with root login but it would be much less secure.