aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README20
-rw-r--r--etc/backup.d/example.mysql4
-rw-r--r--etc/backup.d/example.rdiff11
-rw-r--r--etc/backupninja.conf2
-rw-r--r--handlers/mysql2
-rw-r--r--handlers/rdiff2
-rw-r--r--handlers/svn2
-rwxr-xr-xhandlers/sys2
-rw-r--r--handlers/trac51
9 files changed, 89 insertions, 7 deletions
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 = <vserver> (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 = <path>
+# 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