#!/bin/sh
pool="tank/vol2"
destination="zroot"
remote_pool="zroot/vol2"
host="10.1.0.61"
today=`date +"%Y-%m-%d"`
#yesterday=`date -v -1d +"$type%Y-%m-%d"`
yesterday="2017-01-07"
# create today snapshot
snapshot_today="${pool}@${today}"
# look for a snapshot with this name
if zfs list -H -o name -t snapshot | sort | grep "${snapshot_today}" > /dev/null; then
echo " snapshot, ${snapshot_today}, already exists"
# exit 1
else
echo " taking todays snapshot, ${snapshot_today}"
zfs snapshot -r ${snapshot_today}
fi
# look for yesterday snapshot
snapshot_yesterday="$pool@$yesterday"
snapshot_yesterday_r="$remote_pool@$yesterday"
snapshot_today_r="$remote_pool@${today}"
#echo $snapshot_yesterday
if ssh root@$host "zfs list -H -o name -t filesystem | sort | grep \"${remote_pool}\"" > /dev/null; then
echo " Pool found on remote"
else
echo " Pool missing on remote, aborting"
exit 1;
fi
if zfs list -H -o name -t snapshot | sort | grep "${snapshot_yesterday}" > /dev/null; then
echo " yesterday snapshot, ${snapshot_yesterday}, exists locally"
if ssh root@$host "zfs list -H -o name -t snapshot | sort | grep \"${snapshot_yesterday_r}\"" > /dev/null; then
echo " yesterday snapshot, ${snapshot_yesterday_r}, exists on destination"
if ssh root@$host "zfs list -H -o name -t snapshot | sort | grep \"${snapshot_today_r}\"" > /dev/null; then
echo " Remote already has today's snapshot aborting sync"
exit 2
else
echo " proceeding with incremental sync"
zfs send -R -i ${snapshot_yesterday} ${snapshot_today} | ssh root@$host "zfs receive -Fduv ${destination}"
echo " sync complete"
exit 0;
fi
else
echo " yesterday snapshot, ${snapshot_yesterday_r}, missing on destination"
if ssh root@$host "zfs list -H -o name -t snapshot | sort | grep \"${snapshot_today_r}\"" > /dev/null; then
echo " Remote already has today's snapshot aborting sync"
exit 2
else
echo " proceeding with full sync"
zfs send ${snapshot_today} | ssh root@$host "zfs receive -Fduv ${destination}"
echo " sync complete"
exit 0;
fi
fi
else
echo " missing yesterday snapshot aborting, ${snapshot_yesterday}"
exit 1
fi