chiark / gitweb /
rsync-backup.in, lib.sh.in: Move some definitions to a library.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 16 Jan 2014 09:55:53 +0000 (09:55 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 16 Jan 2014 10:13:50 +0000 (10:13 +0000)
We'll want these for another program, coming soon.

Makefile.am
debian/rsync-backup.install
lib.sh.in [new file with mode: 0644]
rsync-backup.in

index f943ad4006c01e0f0824b96eafe42ae40605e1e6..413d541b16792014ddd10e9a574f57647a8484c6 100644 (file)
@@ -26,6 +26,7 @@
 bin_SCRIPTS             =
 sbin_SCRIPTS            =
 sbin_PROGRAMS           =
+pkgdata_DATA            =
 dist_noinst_SCRIPTS     =
 dist_man_MANS           =
 man_MANS                =
@@ -50,6 +51,7 @@ SUBSTVARS = \
        mntbkpdir="$(mntbkpdir)" \
        fshashdir="$(fshashdir)" \
        pkglocalstatedir="$(localstatedir)/lib/bkp" \
+       pkgdatadir="$(pkgdatadir)" \
        logdir="$(logdir)"
 
 V_SUBST = $(V_SUBST_$V)
@@ -70,6 +72,13 @@ sbin_PROGRAMS                += rfreezefs
 man_MANS               += rfreezefs.8
 endif
 
+pkgdata_DATA           += lib.sh
+CLEANFILES             += lib.sh
+EXTRA_DIST             += lib.sh.in
+lib.sh: lib.sh.in Makefile
+       $(SUBST) >lib.sh.new $(srcdir)/lib.sh.in $(SUBSTVARS) && \
+               mv lib.sh.new lib.sh
+
 sbin_SCRIPTS           += rsync-backup
 dist_man_MANS          += rsync-backup.8
 CLEANFILES             += rsync-backup
index 9156279fa6c5f2b1dc89f0322048eff816aec239..99ef749df9230a24d81b49a655b789d6705849de 100644 (file)
@@ -1,4 +1,5 @@
 /usr/sbin/rsync-backup
 /usr/sbin/update-bkp-index
+/usr/share/rsync-backup/lib.sh
 /usr/share/man/man8/rsync-backup.8
 /usr/share/man/man8/update-bkp-index.8
diff --git a/lib.sh.in b/lib.sh.in
new file mode 100644 (file)
index 0000000..269cef6
--- /dev/null
+++ b/lib.sh.in
@@ -0,0 +1,102 @@
+### -*-bash-*-
+###
+### Common utilities for rsync-backup scripts
+###
+### (c) 2014 Mark Wooding
+###
+
+###----- Licensing notice ---------------------------------------------------
+###
+### This file is part of the `rsync-backup' program.
+###
+### rsync-backup is free software; you can redistribute it and/or modify
+### it under the terms of the GNU General Public License as published by
+### the Free Software Foundation; either version 2 of the License, or
+### (at your option) any later version.
+###
+### rsync-backup is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+### GNU General Public License for more details.
+###
+### You should have received a copy of the GNU General Public License
+### along with rsync-backup; if not, write to the Free Software Foundation,
+### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+###--------------------------------------------------------------------------
+### Configuration.
+
+VERSION=@VERSION@
+pkgdatadir=@pkgdatadir@
+mntbkpdir=@mntbkpdir@
+logdir=@logdir@
+fshashdir=@fshashdir@
+conf=@sysconfdir@/rsync-backup.conf
+
+INDEXDB=@pkglocalstatedir@/index.db
+
+SNAPDIR=$mntbkpdir/snap
+STOREDIR=$mntbkpdir/store
+METADIR=$mntbkpdir/meta
+
+config () {
+  echo
+  cat <<EOF
+conf = $conf
+mntbkpdir = $mntbkpdir
+fshashdir = $fshashdir
+logdir = $logdir
+EOF
+}
+
+###--------------------------------------------------------------------------
+### Date hacking.
+
+parsedate () {
+  date=$1
+  ## Parse an ISO8601 DATE, and set YEAR, MONTH, DAY appropriately (and
+  ## without leading zeros).
+
+  ## Extract the components of the date and trim leading zeros (which will
+  ## cause things to be interpreted as octal and fail).
+  year=${date%%-*} rest=${date#*-}; month=${rest%%-*} day=${rest#*-}
+  year=${year#0} month=${month#0} day=${day#0}
+}
+
+julian () {
+  date=$1
+  ## Convert an ISO8601 DATE to a Julian Day Number.
+
+  parsedate $date
+
+  ## The actual calculation: convert a (proleptic) Gregorian calendar date
+  ## into a Julian day number.  This is taken from Wikipedia's page
+  ## http://en.wikipedia.org/wiki/Julian_day#Calculation but the commentary
+  ## is mine.  The epoch is 4713BC-01-01 (proleptic) Julian, or 4714BC-11-24
+  ## proleptic Gregorian.
+
+  ## If the MONTH is January or February then set a = 1, otherwise set a = 0.
+  a=$(( (14 - $month)/12 ))
+
+  ## Compute a year offset relative to 4799BC-03-01.  This puts the leap day
+  ## as the very last day in a year, which is very convenient.  The offset
+  ## here is sufficient to make all y values positive (within the range of
+  ## the JDN calendar), and is a multiple of 400, which is the Gregorian
+  ## cycle length.
+  y=$(( $year + 4800 - $a ))
+
+  ## Compute the offset month number in that year.  These months count from
+  ## zero, not one.
+  m=$(( $month + 12*$a - 3 ))
+
+  ## Now for the main event.  The (153 m + 2)/5 term is a surprising but
+  ## correct trick for obtaining the number of days in the first m months of
+  ## the (shifted) year).  The magic offset 32045 is what you get when you
+  ## plug the proper JDN epoch (year = -4713, month = 11, day = 24) into the
+  ## above machinery.
+  jdn=$(( $day + (153*$m + 2)/5 + 365*$y + $y/4 - $y/100 + $y/400 - 32045 ))
+
+  echo $jdn
+}
+
+###----- That's all, folks --------------------------------------------------
index e232bc8d766ed51ef85ad84dee64e44db3731799..d7267cad268f2ecf359d024cc26cd5e31551cc9a 100644 (file)
@@ -27,12 +27,7 @@ set -e
 
 thishost=$(hostname -s)
 quis=${0##*/}
-
-VERSION=@VERSION@
-mntbkpdir=@mntbkpdir@
-logdir=@logdir@
-fshashdir=@fshashdir@
-conf=@sysconfdir@/rsync-backup.conf
+. @pkgdatadir@/lib.sh
 
 verbose=:
 dryrun=nil
@@ -185,8 +180,6 @@ runhook () {
 ###--------------------------------------------------------------------------
 ### Database operations.
 
-INDEXDB=@pkglocalstatedir@/index.db
-
 insert_index () {
   host=$1 fs=$2 date=$3 vol=$4
 
@@ -255,7 +248,6 @@ unsnap_ro () {
 ## Snapshot using LVM.
 
 SNAPSIZE="-l10%ORIGIN"
-SNAPDIR=@mntbkpdir@/snap
 
 snap_lvm () {
   vg=$1 lv=$2
@@ -397,53 +389,6 @@ unsnap_rfreezefs () {
 ###--------------------------------------------------------------------------
 ### Expiry computations.
 
-parsedate () {
-  date=$1
-  ## Parse an ISO8601 DATE, and set YEAR, MONTH, DAY appropriately (and
-  ## without leading zeros).
-
-  ## Extract the components of the date and trim leading zeros (which will
-  ## cause things to be interpreted as octal and fail).
-  year=${date%%-*} rest=${date#*-}; month=${rest%%-*} day=${rest#*-}
-  year=${year#0} month=${month#0} day=${day#0}
-}
-
-julian () {
-  date=$1
-  ## Convert an ISO8601 DATE to a Julian Day Number.
-
-  parsedate $date
-
-  ## The actual calculation: convert a (proleptic) Gregorian calendar date
-  ## into a Julian day number.  This is taken from Wikipedia's page
-  ## http://en.wikipedia.org/wiki/Julian_day#Calculation but the commentary
-  ## is mine.  The epoch is 4713BC-01-01 (proleptic) Julian, or 4714BC-11-24
-  ## proleptic Gregorian.
-
-  ## If the MONTH is January or February then set a = 1, otherwise set a = 0.
-  a=$(( (14 - $month)/12 ))
-
-  ## Compute a year offset relative to 4799BC-03-01.  This puts the leap day
-  ## as the very last day in a year, which is very convenient.  The offset
-  ## here is sufficient to make all y values positive (within the range of
-  ## the JDN calendar), and is a multiple of 400, which is the Gregorian
-  ## cycle length.
-  y=$(( $year + 4800 - $a ))
-
-  ## Compute the offset month number in that year.  These months count from
-  ## zero, not one.
-  m=$(( $month + 12*$a - 3 ))
-
-  ## Now for the main event.  The (153 m + 2)/5 term is a surprising but
-  ## correct trick for obtaining the number of days in the first m months of
-  ## the (shifted) year).  The magic offset 32045 is what you get when you
-  ## plug the proper JDN epoch (year = -4713, month = 11, day = 24) into the
-  ## above machinery.
-  jdn=$(( $day + (153*$m + 2)/5 + 365*$y + $y/4 - $y/100 + $y/400 - 32045 ))
-
-  echo $jdn
-}
-
 expire () {
   ## Read dates on stdin; write to stdout `EXPIRE date' for dates which
   ## should be expired and `RETAIN date' for dates which should be retained.
@@ -541,8 +486,6 @@ EOF
 ###--------------------------------------------------------------------------
 ### Actually taking backups of filesystems.
 
-STOREDIR=@mntbkpdir@/store
-METADIR=@mntbkpdir@/meta
 MAXLOG=14
 HASH=sha256
 unset VOLUME
@@ -922,16 +865,6 @@ version () {
   echo "$quis version $VERSION"
 }
 
-config () {
-  echo
-  cat <<EOF
-conf = $conf
-mntbkpdir = $mntbkpdir
-fshashdir = $fshashdir
-logdir = $logdir
-EOF
-}
-
 whine () { echo >&8 "$@"; }
 
 while getopts "hVvc:n" opt; do