35 Commits

Author SHA1 Message Date
bd5161fe5d Update changelog for 1.2.0-1 release 2014-10-13 23:19:48 -05:00
c0b226d4df Update debian/rules for Makefile changes.
Create an override_dh_auto_install rule that appropriately forces the PREFIX
for a managed installation. Creating autotools boilerplate or a fancier
Makefile for this script is not yet worthwhile.
2014-10-13 23:17:01 -05:00
e7e13e9235 Merge branch 'master' into debian 2014-10-13 23:16:31 -05:00
d5cb31aaae Install the cron.d part without the execute bit.
Resolve this lintian error:

	E: zfs-auto-snapshot: bad-permissions-for-etc-cron.d-script etc/cron.d/zfs-auto-snapshot 0755 != 0644
	W: zfs-auto-snapshot: executable-not-elf-or-script etc/cron.d/zfs-auto-snapshot

This should also resolve a related failure on Arch Linux.

Closes: zfsonlinux/zfs-auto-snapshot#4
Thanks: @bitloggerig
Thanks: @scottj97
2014-10-13 23:12:53 -05:00
1ce72681bf Merge pull request #31 from virtualguy/patch-1
Update README
2014-10-13 20:41:01 -04:00
a0df1ebcc1 Merge pull request #30 from mbaynton/remove-only
--destroy-only switch, --{pre,post} fixes
2014-10-13 20:39:40 -04:00
0be4466869 Merge pull request #29 from mmalecki/pre-post
Add pre and post snapshot hooks
2014-10-13 20:37:12 -04:00
9d2398ed8e Merge pull request #26 from borutmrak/master
Fix manpage path
2014-10-13 20:31:06 -04:00
bc1b65a66e Update README
Add some simple installation instructions
2014-08-18 21:38:32 +12:00
bfe4c911a8 Make --{pre,post}-snapshot optional, add --destroy-only, revise docs 2014-08-09 17:23:02 -05:00
10f9b3e336 Document `--{pre,post}-snapshot 2014-08-07 02:08:29 +02:00
c08f366c1c Abort if pre snapshot hook returns non-zero 2014-08-07 02:08:29 +02:00
da5a8bd5b7 Add --{pre,post}-snapshot for pre and post creation hook 2014-08-07 02:08:23 +02:00
a1b89b6fef Makefile:
* Remove PREFIX from cron scripts - they should always end up in /etc.
  * Leave PREFIX for man page and program, and set it to /usr/local by default.
2014-04-23 09:31:30 +02:00
6b24132ccd Update changelog for 1.1.0-0ubuntu1 release 2014-03-31 01:50:30 -05:00
937db23c5b Merge branch 'master' into debian 2014-03-31 01:48:47 -05:00
c19ff8728b PPA 1.0.8-0ubuntu2 release. 2013-03-31 23:11:21 -05:00
28aa53155e Update the debian/control file.
Bump the Standards-Version and update the project links.
2013-03-31 23:08:43 -05:00
64bed700dd PPA 1.0.8-0ubuntu1 release. 2012-01-21 16:38:00 -06:00
a4073f06ed Merge branch 'master' into debian 2012-01-21 16:37:17 -06:00
8486e63724 PPA 1.0.7-0ubuntu1 release. 2011-12-28 13:31:43 -06:00
499e39de29 Merge branch 'master' into debian 2011-12-28 13:29:44 -06:00
646378fe7b PPA 1.0.6-0ubuntu1 release. 2011-11-28 00:11:30 -06:00
3cb3d0b8aa Merge branch 'master' into debian 2011-11-28 00:09:59 -06:00
360098de29 PPA 1.0.5-0ubuntu1 release. 2011-11-25 14:28:40 -06:00
139f4b30d9 Merge branch 'master' into debian 2011-11-25 14:26:50 -06:00
ae3909510a PPA 1.0.4-0ubuntu1 release. 2011-11-23 10:50:57 -06:00
d294fa5401 Merge branch 'master' into debian 2011-11-23 10:49:07 -06:00
968d50ce92 Invert the --skip-scrub test.
The test sense for the --skip-scrub flag is incorrect, which causes
it to operate opposite as intented.
2011-11-22 22:04:13 -06:00
f6f194ac13 PPA 1.0.3-0ubuntu1 release.
My local unpushed tree went bad at the 1.0.2 release. Truncate the
changelog file so that git-dch update it again.
2011-11-21 21:52:54 -06:00
bfe074fbe8 Merge branch 'master' into debian 2011-11-21 21:51:23 -06:00
9327a3f737 Add gbp.conf file for git-buildpackage. 2011-11-21 21:50:35 -06:00
7fd3c45cd4 PPA 1.0.1-0ubuntu1 release. 2011-11-21 20:56:51 -06:00
fe429f408a Merge branch 'master' into debian 2011-11-21 20:41:54 -06:00
8868d533e5 PPA 1.0.0-0ubuntu1 release. 2011-11-21 20:38:25 -06:00
11 changed files with 225 additions and 20 deletions

View File

@ -1,16 +1,18 @@
PREFIX := /usr/local
all: all:
install: install:
install -d $(DESTDIR)$(PREFIX)/etc/cron.d install -d $(DESTDIR)/etc/cron.d
install -d $(DESTDIR)$(PREFIX)/etc/cron.daily install -d $(DESTDIR)/etc/cron.daily
install -d $(DESTDIR)$(PREFIX)/etc/cron.hourly install -d $(DESTDIR)/etc/cron.hourly
install -d $(DESTDIR)$(PREFIX)/etc/cron.weekly install -d $(DESTDIR)/etc/cron.weekly
install -d $(DESTDIR)$(PREFIX)/etc/cron.monthly install -d $(DESTDIR)/etc/cron.monthly
install etc/zfs-auto-snapshot.cron.frequent $(DESTDIR)$(PREFIX)/etc/cron.d/zfs-auto-snapshot install -m 0644 etc/zfs-auto-snapshot.cron.frequent $(DESTDIR)/etc/cron.d/zfs-auto-snapshot
install etc/zfs-auto-snapshot.cron.hourly $(DESTDIR)$(PREFIX)/etc/cron.hourly/zfs-auto-snapshot install etc/zfs-auto-snapshot.cron.hourly $(DESTDIR)/etc/cron.hourly/zfs-auto-snapshot
install etc/zfs-auto-snapshot.cron.daily $(DESTDIR)$(PREFIX)/etc/cron.daily/zfs-auto-snapshot install etc/zfs-auto-snapshot.cron.daily $(DESTDIR)/etc/cron.daily/zfs-auto-snapshot
install etc/zfs-auto-snapshot.cron.weekly $(DESTDIR)$(PREFIX)/etc/cron.weekly/zfs-auto-snapshot install etc/zfs-auto-snapshot.cron.weekly $(DESTDIR)/etc/cron.weekly/zfs-auto-snapshot
install etc/zfs-auto-snapshot.cron.monthly $(DESTDIR)$(PREFIX)/etc/cron.monthly/zfs-auto-snapshot install etc/zfs-auto-snapshot.cron.monthly $(DESTDIR)/etc/cron.monthly/zfs-auto-snapshot
install -d $(DESTDIR)$(PREFIX)/share/man/man8 install -d $(DESTDIR)$(PREFIX)/share/man/man8
install src/zfs-auto-snapshot.8 $(DESTDIR)$(PREFIX)/share/man/man8/zfs-auto-snapshot.8 install src/zfs-auto-snapshot.8 $(DESTDIR)$(PREFIX)/share/man/man8/zfs-auto-snapshot.8
install -d $(DESTDIR)$(PREFIX)/sbin install -d $(DESTDIR)$(PREFIX)/sbin

9
README
View File

@ -10,3 +10,12 @@ snapshots if it is installed.
This program is a posixly correct bourne shell script. It depends only on This program is a posixly correct bourne shell script. It depends only on
the zfs utilities and cron, and can run in the dash shell. the zfs utilities and cron, and can run in the dash shell.
Installation:
-------------
wget https://github.com/zfsonlinux/zfs-auto-snapshot/archive/master.zip
unzip master.zip
cd zfs-auto-snapshot-master
make install

100
debian/changelog vendored Normal file
View File

@ -0,0 +1,100 @@
zfs-auto-snapshot (1.2.0-1) unstable; urgency=low
[ Roland Stühmer ]
* Fix SNAPNAME to contain the DATE if label is empty
[ Borut Mrak ]
* Remove PREFIX from cron scripts - they should always end up in /etc.
* Leave PREFIX for man page and program, and set it to /usr/local by default.
[ Maciej Małecki ]
* Add `--{pre,post}-snapshot` for pre and post creation hook
* Abort if pre snapshot hook returns non-zero
* Document `--{pre,post}-snapshot
[ Mike Baynton ]
* Make --{pre,post}-snapshot optional, add --destroy-only, revise docs
[ virtualguy ]
* Update README
[ Darik Horn ]
* Install the cron.d part without the execute bit.
* Update debian/rules for Makefile changes.
-- Darik Horn <dajhorn@vanadac.com> Mon, 13 Oct 2014 23:17:30 -0500
zfs-auto-snapshot (1.1.0-0ubuntu1) unstable; urgency=low
[ Markus Heberling ]
* Use only name property for zfs list
[ Darik Horn ]
* Add a switch for the fast zfs list invocation.
[ Mike Swanson ]
* Add a manpage
* Update Makefile for the manual page
[ HawkOwl ]
* Set the snapshots to use UTC time, which makes the date/time display correctly in Windows 7 Previous Versions.
-- Darik Horn <dajhorn@vanadac.com> Mon, 31 Mar 2014 01:48:58 -0500
zfs-auto-snapshot (1.0.8-0ubuntu2) unstable; urgency=low
* Update the debian/control file.
-- Darik Horn <dajhorn@vanadac.com> Sun, 31 Mar 2013 23:10:55 -0500
zfs-auto-snapshot (1.0.8-0ubuntu1) unstable; urgency=low
* Update the README file to be more descriptive.
* Fix pool exclusions.
-- Darik Horn <dajhorn@vanadac.com> Sat, 21 Jan 2012 16:37:28 -0600
zfs-auto-snapshot (1.0.7-0ubuntu1) unstable; urgency=low
[ Darik Horn ]
* Change objects to datasets in help and comments.
* Set keep=8 in the weekly cron job.
[ Ulrich Petri ]
* Fixed --prefix and --sep regexes
-- Darik Horn <dajhorn@vanadac.com> Wed, 28 Dec 2011 13:30:02 -0600
zfs-auto-snapshot (1.0.6-0ubuntu1) unstable; urgency=low
* Remove redundant lines in the cron.d file.
* Fix the hourly-daily transposition in the Makefile.
-- Darik Horn <dajhorn@vanadac.com> Mon, 28 Nov 2011 00:10:05 -0600
zfs-auto-snapshot (1.0.5-0ubuntu1) unstable; urgency=low
* Split the cron file for anacron compatibilty.
-- Darik Horn <dajhorn@vanadac.com> Fri, 25 Nov 2011 14:28:07 -0600
zfs-auto-snapshot (1.0.4-0ubuntu1) unstable; urgency=low
* Invert the --skip-scrub test.
* Fold the main loops into a do_snapshots function.
* Consistently quote literal strings.
* Implement --prefix parameter checking.
* Rebase exit codes to above 127.
* Implement the --event option for :auto-snap-desc.
-- Darik Horn <dajhorn@vanadac.com> Wed, 23 Nov 2011 10:49:14 -0600
zfs-auto-snapshot (1.0.3-0ubuntu1) unstable; urgency=low
* Add -q to the getopt list of short options.
* Add an explicit `exit 0` to the end of the script.
* Add gbp.conf file for git-buildpackage.
* Expand the options variable in the cron part file.
* Initial debian packaging.
-- Darik Horn <dajhorn@vanadac.com> Mon, 21 Nov 2011 21:52:11 -0600

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
7

16
debian/control vendored Normal file
View File

@ -0,0 +1,16 @@
Source: zfs-auto-snapshot
Section: admin
Priority: extra
Maintainer: Darik Horn <dajhorn@vanadac.com>
Build-Depends: debhelper (>= 8)
Standards-Version: 3.9.4
Homepage: http://www.zfsonlinux.org/
Vcs-Git: git://github.com/zfsonlinux/zfs-auto-snapshot.git
Vcs-Browser: https://github.com/zfsonlinux/zfs-auto-snapshot/
Package: zfs-auto-snapshot
Architecture: all
Depends: ${misc:Depends}, cron, zfsutils
Description: ZFS Automatic Snapshot Service
Automatically create and destroy ZFS snapshots on an hourly, daily, weekly
and monthly schedule.

1
debian/copyright vendored Normal file
View File

@ -0,0 +1 @@
Copyright 2011 Darik Horn <dajhorn@vanadac.com>

3
debian/gbp.conf vendored Normal file
View File

@ -0,0 +1,3 @@
[DEFAULT]
upstream-branch = master
debian-branch = debian

7
debian/rules vendored Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_install:
dh_auto_install -- PREFIX=/usr

2
debian/watch vendored Normal file
View File

@ -0,0 +1,2 @@
version=3
http://githubredir.debian.net/github/dajhorn/zfs-auto-snapshot/([\d\.].*).tar.gz

View File

@ -64,6 +64,27 @@ Snapshot named filesystem and all descendants.
\fB\-v\fR, \fB\-\-verbose\fR \fB\-v\fR, \fB\-\-verbose\fR
Print info messages. Print info messages.
.TP .TP
\fB\-\-pre-snapshot\fR=\fICOMMAND\fR
Command to run before each dataset is snapshotted.
It is passed the dataset and snapshot name. If it
returns non-zero, snapshotting this dataset is
aborted.
.TP
\fB\-\-post-snapshot\fR=\fICOMMAND\fR
Command to run after each dataset is snapshotted.
It is passed the dataset and snapshot name.
.TP
\fB\-\-destroy-only\fR
Do not create new snapshots, but do destroy older
snapshots. Has no effect unless used with \fB\-k\fR.
.IP
A non-obvious use may be constructon of cron jobs or
scripts that run pre-snapshot command(s), then run
zfs-auto-snapshot (without \fB\-k\fR) to quickly
snapshot all datasets, then run post-snapshot
command(s) and clean up with zfs-auto-snapshot
\fB\-\-destroy-only\fR.
.TP
name name
Filesystem and volume names, or '//' for all ZFS datasets. Filesystem and volume names, or '//' for all ZFS datasets.
.SH SEE ALSO .SH SEE ALSO

View File

@ -39,6 +39,9 @@ opt_setauto=''
opt_syslog='' opt_syslog=''
opt_skip_scrub='' opt_skip_scrub=''
opt_verbose='' opt_verbose=''
opt_pre_snapshot=''
opt_post_snapshot=''
opt_do_snapshots=1
# Global summary statistics. # Global summary statistics.
DESTRUCTION_COUNT='0' DESTRUCTION_COUNT='0'
@ -69,6 +72,7 @@ print_usage ()
-g, --syslog Write messages into the system log. -g, --syslog Write messages into the system log.
-r, --recursive Snapshot named filesystem and all descendants. -r, --recursive Snapshot named filesystem and all descendants.
-v, --verbose Print info messages. -v, --verbose Print info messages.
--destroy-only Only destroy older snapshots, do not create new ones.
name Filesystem and volume names, or '//' for all ZFS datasets. name Filesystem and volume names, or '//' for all ZFS datasets.
" "
} }
@ -148,6 +152,7 @@ do_snapshots () # properties, flags, snapname, oldglob, [targets...]
local GLOB="$4" local GLOB="$4"
local TARGETS="$5" local TARGETS="$5"
local KEEP='' local KEEP=''
local RUNSNAP=1
# global DESTRUCTION_COUNT # global DESTRUCTION_COUNT
# global SNAPSHOT_COUNT # global SNAPSHOT_COUNT
@ -156,13 +161,21 @@ do_snapshots () # properties, flags, snapname, oldglob, [targets...]
for ii in $TARGETS for ii in $TARGETS
do do
if do_run "zfs snapshot $PROPS $FLAGS '$ii@$NAME'" if [ -n "$opt_do_snapshots" ]
then then
SNAPSHOT_COUNT=$(( $SNAPSHOT_COUNT + 1 )) if [ "$opt_pre_snapshot" != "" ]
else then
WARNING_COUNT=$(( $WARNING_COUNT + 1 )) do_run "$opt_pre_snapshot $ii $NAME" || RUNSNAP=0
continue fi
fi if [ $RUNSNAP -eq 1 ] && do_run "zfs snapshot $PROPS $FLAGS '$ii@$NAME'"
then
[ "$opt_post_snapshot" != "" ] && do_run "$opt_post_snapshot $ii $NAME"
SNAPSHOT_COUNT=$(( $SNAPSHOT_COUNT + 1 ))
else
WARNING_COUNT=$(( $WARNING_COUNT + 1 ))
continue
fi
fi
# Retain at most $opt_keep number of old snapshots of this filesystem, # Retain at most $opt_keep number of old snapshots of this filesystem,
# including the one that was just recently created. # including the one that was just recently created.
@ -198,6 +211,7 @@ GETOPT=$(getopt \
--longoptions=default-exclude,dry-run,fast,skip-scrub,recursive \ --longoptions=default-exclude,dry-run,fast,skip-scrub,recursive \
--longoptions=event:,keep:,label:,prefix:,sep: \ --longoptions=event:,keep:,label:,prefix:,sep: \
--longoptions=debug,help,quiet,syslog,verbose \ --longoptions=debug,help,quiet,syslog,verbose \
--longoptions=pre-snapshot:,post-snapshot:,destroy-only \
--options=dnshe:l:k:p:rs:qgv \ --options=dnshe:l:k:p:rs:qgv \
-- "$@" ) \ -- "$@" ) \
|| exit 128 || exit 128
@ -308,6 +322,18 @@ do
opt_verbose='1' opt_verbose='1'
shift 1 shift 1
;; ;;
(--pre-snapshot)
opt_pre_snapshot="$2"
shift 2
;;
(--post-snapshot)
opt_post_snapshot="$2"
shift 2
;;
(--destroy-only)
opt_do_snapshots=''
shift 1
;;
(--) (--)
shift 1 shift 1
break break
@ -512,11 +538,28 @@ SNAPNAME="$opt_prefix${opt_label:+$opt_sep$opt_label}-$DATE"
# The expression for matching old snapshots. -YYYY-MM-DD-HHMM # The expression for matching old snapshots. -YYYY-MM-DD-HHMM
SNAPGLOB="$opt_prefix${opt_label:+?$opt_label}????????????????" SNAPGLOB="$opt_prefix${opt_label:+?$opt_label}????????????????"
test -n "$TARGETS_REGULAR" \ if [ -n "$opt_do_snapshots" ]
&& print_log info "Doing regular snapshots of $TARGETS_REGULAR" then
test -n "$TARGETS_REGULAR" \
&& print_log info "Doing regular snapshots of $TARGETS_REGULAR"
test -n "$TARGETS_RECURSIVE" \ test -n "$TARGETS_RECURSIVE" \
&& print_log info "Doing recursive snapshots of $TARGETS_RECURSIVE" && print_log info "Doing recursive snapshots of $TARGETS_RECURSIVE"
if test -n "$opt_keep" && [ "$opt_keep" -ge "1" ]
then
print_log info "Destroying all but the newest $opt_keep snapshots of each dataset."
fi
elif test -n "$opt_keep" && [ "$opt_keep" -ge "1" ]
then
test -n "$TARGETS_REGULAR" \
&& print_log info "Destroying all but the newest $opt_keep snapshots of $TARGETS_REGULAR"
test -n "$TARGETS_RECURSIVE" \
&& print_log info "Recursively destroying all but the newest $opt_keep snapshots of $TARGETS_RECURSIVE"
else
print_log notice "Only destroying snapshots, but count of snapshots to preserve not given. Nothing to do."
fi
test -n "$opt_dry_run" \ test -n "$opt_dry_run" \
&& print_log info "Doing a dry run. Not running these commands..." && print_log info "Doing a dry run. Not running these commands..."