diff --git a/src/zfs-auto-snapshot.sh b/src/zfs-auto-snapshot.sh index e60a437..3252b81 100755 --- a/src/zfs-auto-snapshot.sh +++ b/src/zfs-auto-snapshot.sh @@ -38,6 +38,7 @@ opt_sep='_' opt_setauto='' opt_syslog='' opt_skip_scrub='' +opt_utc='' opt_verbose='' # Global summary statistics. @@ -62,6 +63,7 @@ print_usage () -k, --keep=NUM Keep NUM recent snapshots and destroy older snapshots. -l, --label=LAB LAB is usually 'hourly', 'daily', or 'monthly'. -p, --prefix=PRE PRE is 'zfs-auto-snap' by default. + --utc Use UTC times in snapshot names. -q, --quiet Suppress warnings and notices at the console. --send-full=F Send zfs full backup. Unimplemented. --send-incr=F Send zfs incremental backup. Unimplemented. @@ -156,6 +158,10 @@ do_snapshots () # properties, flags, snapname, oldglob, [targets...] for ii in $TARGETS do + if echo $SNAPSHOTS_OLD | grep -q "$ii@$NAME" + then + do_run "zfs destroy $FLAGS '$ii@$NAME'" + fi if do_run "zfs snapshot $PROPS $FLAGS '$ii@$NAME'" then SNAPSHOT_COUNT=$(( $SNAPSHOT_COUNT + 1 )) @@ -196,7 +202,7 @@ do_snapshots () # properties, flags, snapname, oldglob, [targets...] GETOPT=$(getopt \ --longoptions=default-exclude,dry-run,fast,skip-scrub,recursive \ - --longoptions=event:,keep:,label:,prefix:,sep: \ + --longoptions=event:,keep:,label:,prefix:,sep:,utc \ --longoptions=debug,help,quiet,syslog,verbose \ --options=dnshe:l:k:p:rs:qgv \ -- "$@" ) \ @@ -272,6 +278,10 @@ do opt_prefix="$2" shift 2 ;; + (--utc) + opt_utc='--utc' + shift 1 + ;; (-q|--quiet) opt_debug='' opt_quiet='1' @@ -504,7 +514,7 @@ SNAPPROP="-o com.sun:auto-snapshot-desc='$opt_event'" # ISO style date; fifteen characters: YYYY-MM-DD-HHMM # On Solaris %H%M expands to 12h34. -DATE=$(date --utc +%F-%H%M) +DATE=$(date $opt_utc +%F-%H%M) # The snapshot name after the @ symbol. SNAPNAME="$opt_prefix${opt_label:+$opt_sep$opt_label}-$DATE"