#!/bin/sh

base=/a/cache
zbase=a/cache

fs=$1

rsnap=$(zclient list | grep "^$fs " | tail -1 | awk '{print $2}')
if [ -z "$rsnap" ]; then
	echo "No such filesystem $fs"
	exit 1
fi

lsnap=$(zfs list -Ht snapshot | grep "^$zbase/$fs@" | tail -1 | sed -e "s,^$zbase/$fs@,," | awk '{print $1}')
if [ -z "$lsnap" ]; then
	echo "No local snapshot found"
	zclient get ${fs} ${rsnap} | zcat | zfs receive ${zbase}/${fs}
else
	if [ "$lsnap" = "$rsnap" ]; then
		exit 0
	fi
	zclient diff ${fs} ${lsnap} ${rsnap} | zcat | zfs receive -F ${zbase}/${fs}
fi
	
