From d52a1ac97e97c51c15ccd52d7dce93d3a092e636 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Mon, 13 Jun 2005 19:37:26 +0000 Subject: [PATCH] Added trac handler, changed VSERVERS variable to be lowercase and added some vserver documentation to README and to the handlers --- README | 20 ++++++++++++++- etc/backup.d/example.mysql | 4 ++- etc/backup.d/example.rdiff | 11 ++++++++ etc/backupninja.conf | 2 +- handlers/mysql | 2 +- handlers/rdiff | 2 +- handlers/svn | 2 +- handlers/sys | 2 +- handlers/trac | 51 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 handlers/trac diff --git a/README b/README index f50f127..b6483bd 100644 --- a/README +++ b/README @@ -23,7 +23,7 @@ Features: - backup actions can be scheduled - you can choose when status report emails are mailed to you (always, on warning, on error, never). - - works with linux-vservers + - works with Linux-Vservers (http://linux-vserver.org/) The following options are available: -h, --help This usage message @@ -194,3 +194,21 @@ Installation: # mkdir /etc/backup.d/ # mv etc/backupninja.conf /etc/backupninja.conf # mv handlers /usr/share/backupninja + + +VSERVERS +======== + +If you are using Linux-Vservers (http://linux-vserver.org/) there are some +special capabilities that different handlers have to make vserver backups easier. +Set the variable "vservers" to be "yes" in /etc/backupninja.conf and see the +example configuration files for each handler to configure the vserver specific +variables. + +Additional vserver variables that can be configured in /etc/backupninja.conf. but +probably don't need to be changed: + +VSERVERINFO (default: /usr/sbin/vserver-info) +VSERVER (default: /usr/sbin/vserver) +VROOTDIR (default: `$VSERVERINFO info SYSINFO |grep vserver-Rootdir | awk '{print $2}'; fi`) + diff --git a/etc/backup.d/example.mysql b/etc/backup.d/example.mysql index e0559fe..51c2247 100644 --- a/etc/backup.d/example.mysql +++ b/etc/backup.d/example.mysql @@ -70,4 +70,6 @@ compress = yes # vsname = (no default) # what vserver to operate on, only used if vserver = yes in /etc/backupninja.conf # if you do not specify a vsname the host will be operated on - +# +# NB: databases = all doesn't seem to work with hotcopy = yes when vsname is specified +# I would like to know how to fix this. diff --git a/etc/backup.d/example.rdiff b/etc/backup.d/example.rdiff index 1fe31bb..bd16c3c 100644 --- a/etc/backup.d/example.rdiff +++ b/etc/backup.d/example.rdiff @@ -41,6 +41,17 @@ include = /usr/local/sbin include = /var/lib/dpkg/status include = /var/lib/dpkg/status-old +# If vservers = yes in /etc/backupninja.conf then the following variable can be used: +# vsinclude = +# Any path specified in vsinclude is added to the include list for each vserver +# on the system. +# e.g. vsinclude = /home will backup the /home partition in every vserver +# on the system. If you have /vservers/foo, /vservers/bar and /vservers/baz +# this vsinclude will add to the include list /vservers/foo/home, +# /vservers/bar/home and /vservers/baz/home +# Included vservers are derived from listing all vservers in $VROOTDIR (suggestions +# for improving this are encouraged). + # files to exclude from the backup # (supports globbing with '*') #exclude = /home/*/.gnupg diff --git a/etc/backupninja.conf b/etc/backupninja.conf index 97af062..6fe2708 100644 --- a/etc/backupninja.conf +++ b/etc/backupninja.conf @@ -45,5 +45,5 @@ usecolors = yes when = everyday at 01:00 # if running vservers, set to yes -VSERVERS = no +vservers = no diff --git a/handlers/mysql b/handlers/mysql index a4a1497..d5c0370 100644 --- a/handlers/mysql +++ b/handlers/mysql @@ -28,7 +28,7 @@ fi # If vservers are configured, decide if the handler should # use them or if it should just operate on the host -if [ "$VSERVERS" = "yes" ] +if [ "$vservers" = "yes" ] then if [ ! -z $vsname ] then diff --git a/handlers/rdiff b/handlers/rdiff index ca97fa4..713f4c6 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -26,7 +26,7 @@ getconf user; destuser=$user getconf host; desthost=$host # See if vservers are configured -if [ "$VSERVERS" = "yes" ] +if [ "$vservers" = "yes" ] then if [ ! -d $VROOTDIR ] then diff --git a/handlers/svn b/handlers/svn index cd3cc2e..551255b 100644 --- a/handlers/svn +++ b/handlers/svn @@ -12,7 +12,7 @@ error=0 # If vservers are configured, decide if the handler should # use them or if it should just operate on the host -if [ "$VSERVERS" = "yes" ] +if [ "$vservers" = "yes" ] then if [ ! -z $vsname ] then diff --git a/handlers/sys b/handlers/sys index f111097..9b836a7 100755 --- a/handlers/sys +++ b/handlers/sys @@ -27,7 +27,7 @@ getconf hardware yes getconf hardwarefile /var/backups/hardware.txt # See if vservers are configured -if [ "$VSERVERS" = "yes" ] +if [ "$vservers" = "yes" ] then if [ ! -d $VROOTDIR ] then diff --git a/handlers/trac b/handlers/trac new file mode 100644 index 0000000..d344082 --- /dev/null +++ b/handlers/trac @@ -0,0 +1,51 @@ +# +# this handler will backup trac environments (based on the svn handler) +# +# http://trac.edgewall.com/ +# + +getconf src /var/lib/trac +getconf dest /var/backups/trac +getconf tmp /var/backups/trac.tmp + +error=0 +cd $src +for repo in `find . -name VERSION` +do + repo=`dirname $repo` + + # Just make the $tmp dir, not $tmp/$repo + ret=`mkdir -p $tmp 2>&1` + code=$? + if [ "$ret" ]; then + debug "$ret" + fi + if [ $code != 0 ]; then + error "command failed mkdir -p $tmp" + fi + + ret=`trac-admin $src/$repo hotcopy $tmp/$repo 2>&1` + code=$? + if [ "$ret" ]; then + debug "$ret" + fi + if [ $code != 0 ]; then + error "command failed -- trac-admin $src/$repo hotcopy $tmp/$repo" + error=1 + fi +done + +if [ $error -eq 1 ]; then + echo "Error: because of earlier errors, we are leaving trac backups in $tmp instead of $dest" +else + if [ -d $dest -a -d $tmp ]; then + rm -rf $dest + fi + if [ -d $tmp ]; then + mv $tmp $dest + fi +fi + +exit 0 + +# vim: filetype=sh -- 2.30.2