#!/bin/ksh -xv # # This script will perform ZFS filesystem snapshots # ########################################################################## # ZFSFS=ZFSDATA1 function take_snapshot { # if zfs list -H -o name | grep $ZFSFS $1 >/dev/null 2>&1 # then zfs destroy $1 # fi zfs snapshot ${1} } case ${1} in "hourly") snap=hourly_$(date +%H) ;; "nightly") snap=nightly_$(date +%d) ;; "monthly") snap=monthly_$(($(date +%m)-1)) ;; esac for fs in $(zfs list -H -o name -t filesystem | grep $ZFSFS) do take_snapshot ${fs}@${snap} done # Add to crontab #0 * * * * /ZFSDATA1/LOGS/ZFSsnapshot.ksh hourly #59 23 * * * /ZFSDATA1/LOGS/ZFSsnapshot.ksh nightly #1 0 1 * * /ZFSDATA1/LOGS/ZFSsnapshot.ksh monthly