ZFS script to take backup
# Ayotunde ITAYEMI (28-July-2009) and Modify for this backup by Lloyd Johnson
# Please modify if deployed on another system or if the configuration
# of this system changes
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Areas to modify (zfs list )file system : Note during the installation make sure, that the directory #make /root must be check before installation, if that path is there, the script cannot execute, #however you can delete it or change the path from your script. AERAS marked with red must be #check before executing the script.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Restoring ZFS file system
# NOTE: I have commented out the backup for mmp01pool since that's
# the temporary location in which rpool will be backed up to
# the backup administrator MUST remember to take the backup
# of the mmp01pool as the ZONE O/S resides in that pool
#
# alternatively, change the BACKUPLOCATION to a mounted external (NFS) filesyste
m
# then uncomment the commented steps for backing up the mmp01pool zpool.
#
HOSTNAME=`hostname`
DATE=`date +%d%m%Y`
#BACKUPLOCATION=/mmp01pool/$HOSTNAME.OS.BACKUP.$DATE
BACKUPLOCATION=/tmp/osbackup/$HOSTNAME.OS.BACKUP.$DATE
# directory to mount your backup location
mkdir /tmp/osbackup
# The backup Location i use nfs, use can be different
mount -f nfs 172.16.103.47:/vol/bkup4unixtest/ /tmp/osbackup
if [ $? != 0 ]
then
# mount of backup destination failed. Abort backup
exit
fi
mkdir $BACKUPLOCATION
#This path must not be there, check from cd / delete it or change the location
mkdir /root
cd /root
# Save various details about O/S storage configuration:
echo "O/S storage configuration ...." > $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "\nzpool list" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zpool list >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "\nzpool status" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zpool status >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "\nzfs list" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs list >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
# Take a copy of the properties that are set in the rpool and all filesystems associated with it:
zpool get all rpool >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/ROOT >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/ROOT/s10s_u7wos_08 >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/ROOT/s10s_u7wos_08/var >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/dump >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/export >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/export/home >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all rpool/swap >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
# ZONE pool (include filesystem for mmp01lz ZONE)
# Take a copy of the properties that are set in the mmp01pool and all filesystems associated with it:
# ---------------- applies to mmp01gz ----------------------------
zpool get all mmp01pool >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all mmp01pool >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all mmp01pool/mmp01lz >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
zfs get all mmp01pool/oracleapps >> $HOSTNAME.zfs.zpools.props.$DATE.txt
echo "" >> $HOSTNAME.zfs.zpools.props.$DATE.txt
# ---------------- end applies to mmp01gz ------------------------
# Prepare TEMPORARY! backup location
#mkdir $BACKUPLOCATION
cp $HOSTNAME.zfs.zpools.props.$DATE.txt $BACKUPLOCATION/
# Actually take the Backups
# I will take the backup of the zpools (rpool) to mmp01pool/
# then move them out and then take the backup of mmp01pool/ to somewhere else
# Preparation - destroy existing snapshots????
zfs destroy rpool@backup
zfs destroy rpool/ROOT@backup
zfs destroy rpool/ROOT/s10s_u7wos_08@backup
zfs destroy rpool/ROOT/s10s_u7wos_08/var@backup
zfs destroy rpool/export@backup
zfs destroy rpool/export/home@backup
zfs destroy mmp01pool@backup
zfs destroy mmp01pool/mmp01lz@backup
zfs destroy mmp01pool/oracleapps@backup
# Now snapshot the rpools with a suitable snapshot name:
zfs snapshot -r rpool@backup
zfs snapshot -r mmp01pool@backup
# Destroy the SWAP and DUMP snapshots - they don't need to be backed up
zfs destroy rpool/swap@backup
zfs destroy rpool/dump@backup
# For each filesystem, send the data to a suitable backup file/location.
zfs send -v rpool@backup > $BACKUPLOCATION/$HOSTNAME.rpool.$DATE.dump
zfs send -v rpool/ROOT@backup > $BACKUPLOCATION/$HOSTNAME.rpool.ROOT.$DATE.dump
zfs send -vR rpool/ROOT/s10s_u7wos_08@backup > $BACKUPLOCATION/$HOSTNAME.rpool.ROOT.s10s_u7wos_08.$DATE.dump
zfs send -v rpool/ROOT/s10s_u7wos_08/var@backup > $BACKUPLOCATION/$HOSTNAME.rpool.ROOT.s10s_u7wos_08.var.$DATE.dump
zfs send -v rpool/export@backup > $BACKUPLOCATION/$HOSTNAME.rpool.export.$DATE.dump
zfs send -v rpool/export/home@backup > $BACKUPLOCATION/$HOSTNAME.rpool.export.home.$DATE.dump
# Now snapshot the mmp01pool with a suitable snapshot name:
# backup mmp01pool
zfs send -v mmp01pool@backup > $BACKUPLOCATION/$HOSTNAME.mmp01pool.$DATE.dump
zfs send -v mmp01pool/mmp01lz@backup > $BACKUPLOCATION/$HOSTNAME.mmp01pool.mmp01lz.$DATE.dump
zfs send -v mmp01pool/oracleapps@backup > $BACKUPLOCATION/$HOSTNAME.mmp01pool.oracleapps$DATE.dump
# Cleaning up - destroy snapshotss?????
zfs destroy rpool@backup
zfs destroy rpool/ROOT@backup
zfs destroy rpool/ROOT/s10s_u7wos_08@backup
zfs destroy rpool/ROOT/s10s_u7wos_08/var@backup
zfs destroy rpool/export@backup
zfs destroy rpool/export/home@backup
zfs destroy mmp01pool@backup
zfs destroy mmp01pool/mmp01lz@backup
zfs destroy mmp01pool/oracleapps@backup
# Transfer backup files off system
# will stop script run and prompt for password unless using password-less authentication: ssh user equivalence with RSA/DSA keys
# scp -r $BACKUPLOCATION jlloyd@172.16.65.32:/test
Scp –r $BACKUPLOCATION jlloyd@172.16.65.32:/test
umount /tmp/osbackup
rmdir /tmp/osbackup
# END OF BACKUP SCRIPT
Comments
Post a Comment