| 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