diff --git a/etc/zfs-auto-snapshot.cron.daily b/etc/zfs-auto-snapshot.cron.daily index 14fe006..d46e2b2 100644 --- a/etc/zfs-auto-snapshot.cron.daily +++ b/etc/zfs-auto-snapshot.cron.daily @@ -1,6 +1,8 @@ #!/bin/sh +PATH="/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" + # Only call zfs-auto-snapshot if it's available -which zfs-auto-snapshot > /dev/null || exit 0 +which zfs-auto-snapshot > /dev/null || exit 1 -exec zfs-auto-snapshot --quiet --syslog --label=daily --keep=31 // +exec zfs-auto-snapshot --quiet --syslog --label=daily --keep=32 --local-tz // diff --git a/etc/zfs-auto-snapshot.cron.frequent b/etc/zfs-auto-snapshot.cron.frequent index 613afc9..e1867c3 100644 --- a/etc/zfs-auto-snapshot.cron.frequent +++ b/etc/zfs-auto-snapshot.cron.frequent @@ -1,3 +1,7 @@ +#!/bin/sh + PATH="/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" -*/15 * * * * root which zfs-auto-snapshot > /dev/null || exit 0 ; zfs-auto-snapshot --quiet --syslog --label=frequent --keep=4 // +*/15 * * * * root which zfs-auto-snapshot > /dev/null || exit 1 + +exec zfs-auto-snapshot --quiet --syslog --label=frequent --keep=5 --local-tz // diff --git a/etc/zfs-auto-snapshot.cron.hourly b/etc/zfs-auto-snapshot.cron.hourly index 5da52b1..a5f96c0 100644 --- a/etc/zfs-auto-snapshot.cron.hourly +++ b/etc/zfs-auto-snapshot.cron.hourly @@ -1,6 +1,8 @@ #!/bin/sh +PATH="/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" + # Only call zfs-auto-snapshot if it's available -which zfs-auto-snapshot > /dev/null || exit 0 +which zfs-auto-snapshot > /dev/null || exit 1 -exec zfs-auto-snapshot --quiet --syslog --label=hourly --keep=24 // +exec zfs-auto-snapshot --quiet --syslog --label=hourly --keep=25 --local-tz // diff --git a/etc/zfs-auto-snapshot.cron.monthly b/etc/zfs-auto-snapshot.cron.monthly index 2ab823f..71ed091 100644 --- a/etc/zfs-auto-snapshot.cron.monthly +++ b/etc/zfs-auto-snapshot.cron.monthly @@ -1,6 +1,8 @@ #!/bin/sh +PATH="/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" + # Only call zfs-auto-snapshot if it's available -which zfs-auto-snapshot > /dev/null || exit 0 +which zfs-auto-snapshot > /dev/null || exit 1 -exec zfs-auto-snapshot --quiet --syslog --label=monthly --keep=12 // +exec zfs-auto-snapshot --quiet --syslog --label=monthly --keep=12 --local-tz // diff --git a/etc/zfs-auto-snapshot.cron.weekly b/etc/zfs-auto-snapshot.cron.weekly index 3aa977a..c7a27de 100644 --- a/etc/zfs-auto-snapshot.cron.weekly +++ b/etc/zfs-auto-snapshot.cron.weekly @@ -1,6 +1,8 @@ #!/bin/sh +PATH="/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" + # Only call zfs-auto-snapshot if it's available -which zfs-auto-snapshot > /dev/null || exit 0 +which zfs-auto-snapshot > /dev/null || exit 1 -exec zfs-auto-snapshot --quiet --syslog --label=weekly --keep=8 // +exec zfs-auto-snapshot --quiet --syslog --label=weekly --keep=9 --local-tz // diff --git a/src/zfs-auto-snapshot.8 b/src/zfs-auto-snapshot.8 index 51fdc7f..cca428c 100644 --- a/src/zfs-auto-snapshot.8 +++ b/src/zfs-auto-snapshot.8 @@ -43,6 +43,9 @@ LAB is usually 'hourly', 'daily', or 'monthly'. \fB\-p\fR, \fB\-\-prefix\fR=\fIPRE\fR PRE is 'zfs\-auto\-snap' by default. .TP +\fB\-\-local\-tz\fR +Use system's local timezone instead of UTC in snapshot names. +.TP \fB\-q\fR, \fB\-\-quiet\fR Suppress warnings and notices at the console. .TP diff --git a/src/zfs-auto-snapshot.sh b/src/zfs-auto-snapshot.sh index a97df0a..3563bb5 100644 --- a/src/zfs-auto-snapshot.sh +++ b/src/zfs-auto-snapshot.sh @@ -42,6 +42,7 @@ opt_verbose='' opt_pre_snapshot='' opt_post_snapshot='' opt_do_snapshots=1 +opt_local_tz='' # Global summary statistics. DESTRUCTION_COUNT='0' @@ -65,6 +66,8 @@ 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. + --local-tz Use system's local timezone instead of UTC 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. @@ -210,7 +213,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=debug,help,quiet,syslog,verbose \ + --longoptions=local-tz,debug,help,quiet,syslog,verbose \ --longoptions=pre-snapshot:,post-snapshot:,destroy-only \ --options=dnshe:l:k:p:rs:qgv \ -- "$@" ) \ @@ -286,6 +289,10 @@ do opt_prefix="$2" shift 2 ;; + (--local-tz) + opt_local_tz='1' + shift 1 + ;; (-q|--quiet) opt_debug='' opt_quiet='1' @@ -536,7 +543,14 @@ 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) +# If the --local-tz flag is set use the system's timezone. +# Otherwise, the default is to use UTC. +if [ -n "$opt_local_tz" ] +then + DATE=$(date +%F-%H%M) +else + DATE=$(date --utc +%F-%H%M) +fi # The snapshot name after the @ symbol. SNAPNAME="$opt_prefix${opt_label:+$opt_sep$opt_label}-$DATE"