ZFSSnapshotBackup-rpool

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 ?)