#!/bin/ksh -p function take_snap { if zfs list -H -o name $1 >/dev/null 2>&1 then zfs destroy $1 fi zfs snapshot ${1} } case ${1:-boot} in "boot") snap=$(date '+%F-%T') ;; "minute") snap=minute_$(date +%M) ;; "hour") snap=hour_$(date +%H) ;; "day") snap=day_$(date +%e) ;; "month") snap=month_$(date +%m) ;; esac for fs in $(zfs list -H -o name -t filesystem) do take_snap ${fs}@${snap} done