#!/bin/bash # Author: Alan J. Pippin # Description: This script is a wrapper script that calls zfs-autosnap # for each filesystem provided below. # source our configuration config="${0%/*}/zfs-scripts.conf" [ -e "${config}.dist" ] && . ${config}.dist [ -e "${config}" ] && . ${config} # Setup some default values logfile="$logdir/zfs-autosnap.log" numsnapshots=20 maxagedays=365 date=`date` mylockdir="/tmp/zfs-autosnap-all" current_hour=`date +"%H"` current_minute=`date +"%M"` current_day=`date +"%u"` # Make sure we aren't already running if ! mkdir "$mylockdir" >/dev/null 2>&1; then echo "$date Another $0 process is already running" >> $logfile exit 1 fi # Auto snapshot every zfs filesystem on the system specified below date >> $logfile # Special filesystems # ex: zfs-autosnap storage /storage $numsnapshots 15 # ex: zfs-autosnap tank/usr/videos /usr/videos $numsnapshots 15 # Normal filesystems # ex: zfs-autosnap tank / $numsnapshots $maxagedays # ex: zfs-autosnap tank/home /home $numsnapshots $maxagedays # Daily filesystems (only perform these at midnight) # midnight = true if (midnight < current time < midnight+5 min) if [[ $current_hour == "00" && $current_minute -lt 5 ]]; then echo "Performing Daily snapshots" >> $logfile fi # Weekly filesystems (only perform these on Sunday at midnight) # midnight = true if (midnight < current time < midnight+5 min) if [[ $current_day == "7" && $current_hour == "00" && $current_minute -lt 5 ]]; then echo "Performing Weekly snapshots" >> $logfile fi rm -rf "$mylockdir"