Zfs Replication
I’ve been hacking a like bash code to build a replication offline backup system for zfs. Bit of a rough job, but some people might find it useful. Seems though that the iscsi target in Solaris is in a worse state that I realised, so I might have to reconsider Plan Linux. It would be a shame as being able to do stuff like the below is very nice and creates a whole new level of sysadmin ease.
#!/bin/bash if [ $# -lt 1 ]; then echo "Usage: $0 tank" exit 0 fi TANK=$1 DSTN="tank/sstore" TIME=`date '+%Y-%m-%d-%H:%M:%S'` zfs snapshot -r $TANK@$TIME for i in `zfs list -H | grep $TIME | cut -f1` ; do FS=`echo $i | cut -f1 -d'@'` LAST=`ssh ihstore zfs list -Ho backups:lastsend $DSTN/$FS 2> /dev/null` if [ $? == 1 ]; then echo "New $FS to $i" echo " zfs send $i | ssh ihstore zfs receive -v -d $DSTN/$TANK" zfs send $i | ssh ihstore zfs receive -v -d $DSTN/$TANK ERR=$? if [ $ERR != 0 ]; then echo "Error: $ERR for $i"; continue ; fi ssh ihstore zfs set backups:lastsend=$i $DSTN/$FS continue else echo "$FS from $LAST to $i" echo " zfs send -i $LAST $i | ssh ihstore zfs receive -F $DSTN/$i" zfs send -i $LAST $i | ssh ihstore zfs receive -v -F $DSTN/$i ERR=$? if [ $ERR != 0 ]; then echo "Error: $ERR for $i"; continue ; fi ssh ihstore zfs set backups:lastsend=$i $DSTN/$FS fi echo " zfs destroy $LAST" zfs destroy $LAST echo "done: $i" echo "" done