A script to backup the rpool image. I am not sure how the restore would work, but probably just fine, but you would need an installed functional machine to restore the rpool/ROOT.
#!/bin/bash
# Create a weekly full backup with nightly increments from previous weeks full backup.
# Remove incremental backups from last week.
#
# See if there is an full backup for this week
TODAY=$(/opt/csw/bin/gdate +'%Y-W%U-%u')
OLDBACKUP=$(/opt/csw/bin/gdate +'%Y-W%U-%u' -d"-3 weeks")
LASTFULL=$(/opt/csw/bin/gdate +'%Y-W%U-%u' -d"last saturday")
SATURDAY=$(/opt/csw/bin/gdate +'%Y-W%U-%u' -d"this saturday")
echo "************************************************************************"
echo "Today:" $TODAY
echo "This Saturday:" $SATURDAY
echo "Last Saturday:" $LASTFULL
echo "************************************************************************"
FILEDIR=/projects/zfs_backups
cd $FILEDIR
LASTFULLFILE=$FILEDIR/zfs_rpool_full.$LASTFULL
SATURDAYFILE=$FILEDIR/zfs_rpool_full.$SATURDAY
INCREMENTALFILE=$FILEDIR/zfs_incr_rpool.$TODAY
FILESYSTEM=rpool
echo "Last Full backup name:" $LASTFULLFILE
echo
echo "Last Saturdays full backup filename:" $LASTFULLFILE
echo
# If today = sat (%w = 6) then
# snapshot (zfs snapshot) and then put it into a file (zfs send snapshot> filename).
echo "Checking to see if this is Satuday" $SATURDAY
echo
{
if [ "$TODAY" = "$SATURDAY" ] ; then
echo "Its saturday, we are doing a full backup..."
echo "Full zfs snapshot "$FILESYSTEM"@"$FILENAME
echo
zfs snapshot -r $FILESYSTEM@$SATURDAY
zfs send -R $FILESYSTEM@SATURDAY > $SATURDAYFILE
echo "Done doing a Satuday full backup."
else
echo "Its not Satuday..."
echo
echo "Does a full backup exist from last week?"
echo
{ if [ -e "$LASTFULLFILE" ] ; then
echo "Yes! A full backup exists."
echo "Creating an incremental backup..."
echo
zfs snapshot -r $FILESYSTEM@$TODAY
zfs send -R -i $FILESYSTEM@$LASTFULL $FILESYSTEM@$TODAY > $INCREMENTALFILE
echo "Done doing an incremental backup"
echo
else
echo "No Full backup exists. Creating a full backup..."
echo
zfs snapshot -r $FILESYSTEM@$LASTFULL
zfs send -R $FILESYSTEM@$LASTFULL > $LASTFULLFILE
echo "Done doing a full backup for last saturday (cause it doesn't exist)."
echo
fi
}
fi
}
# Next.. remove old incremental backup files.
# Next.. remove old disk backups (keep 1 or 2 ?)