Revision 120 (by dpavlin, 2009/07/23 23:26:34) receive snapshot from other host using nc for low overhead
#!/bin/sh -x

from=10.60.0.90

fs=`ssh $from zfs list -t snapshot | grep @ | iselect -t "select snapshot to pull" -a | sed 's/ .*$//'`

if [ -z "$fs" ] ; then
	exit;
fi

veid=`echo $fs | cut -d/ -f3 | cut -d@ -f1`
date=`echo $fs | cut -d/ -f3 | cut -d@ -f2`
pool=`echo $fs | cut -d/ -f1`

echo "pull $pool / $veid @ $date"

local=`zfs list | grep $veid | cut -d" " -f1`

if [ -z "$local" ] ; then
	local_pool=`zfs list | grep /backup/ | head -1 | cut -d/ -f1`
	local="$local_pool/backup/$veid"
	zfs create $local || exit
fi

echo "clone $fs -- $veid to $local";

ssh $from "zfs send $fs | nc -w 5 -l -p 8888" &
sleep 1

nc $from 8888 | dd_rescue -w -y 0 -l /tmp/$veid@$data.log - - | zfs receive -F $local && zfs snapshot $local@$date

zfs list -t snapshot | grep $veid