Koha/debian/scripts/koha-dump
Robin Sheat 266f2a3a9f Bug 10735: prevent koha-dump from aborting if backupdir undefined
Older versions of Koha didn't have <backupdir>...</backupdir> defined in
koha-conf.xml. The koha-dump script is aware of this, and checks to see
if it's there. However, if it's not, xmlstarlet returns a non-0 error
code which causes the script to abort due to running under set -e.

Test plan:
 * Remove backupdir from koha-conf.xml
 * Run koha-dump, notice that it doesn't do backups
 * Apply patch
 * Run koha-dump again, notice that it does do backups

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
The fallback method works as described. It might be made more robust
like checking for dir existence (thinking of older instances upgrades).
But it certainly belongs to another bug report.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
As Tomas said, it would be better to alert the user if the backupdir tag
does not exist (or contains a nonexistent directory) in the config file.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2013-12-23 15:55:03 +00:00

68 lines
2 KiB
Bash
Executable file

#!/bin/sh
#
# koha-dump: dump all contents and configs for a Koha site
# Copyright 2010 Catalyst IT, Ltd
#
# This program 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 3 of the License, or
# (at your option) any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
set -e
# Make sure the files we create are not accessible by anyone else.
umask 0077
die() {
echo "$@" 1>&2
exit 1
}
# Parse command line.
[ "$#" = 1 ] || die "Usage: $0 instancename"
name="$1"
kohaconfig="/etc/koha/sites/$name/koha-conf.xml"
date="$(date +%Y-%m-%d)"
echo "Dumping Koha site $name:"
# Dump database.
mysqlhost="$( xmlstarlet sel -t -v 'yazgfs/config/hostname' $kohaconfig )"
mysqldb="$( xmlstarlet sel -t -v 'yazgfs/config/database' $kohaconfig )"
mysqluser="$( xmlstarlet sel -t -v 'yazgfs/config/user' $kohaconfig )"
mysqlpass="$( xmlstarlet sel -t -v 'yazgfs/config/pass' $kohaconfig )"
backupdir="$( xmlstarlet sel -t -v 'yazgfs/config/backupdir' $kohaconfig || true )"
[ -z "$backupdir" ] && backupdir="/var/spool/koha/$name"
dbdump="$backupdir/$name-$date.sql.gz"
echo "* DB to $dbdump"
mysqldump --databases --host="$mysqlhost" \
--user="$mysqluser" --password="$mysqlpass" "$mysqldb" |
gzip > "$dbdump"
chown "root:$name-koha" "$dbdump"
chmod g+r "$dbdump"
# Dump configs, logs, etc.
metadump="$backupdir/$name-$date.tar.gz"
echo "* configs, logs to $metadump"
tar -C / -czf "$metadump" \
"etc/koha/sites/$name" \
"etc/apache2/sites-available/$name" \
"etc/apache2/sites-enabled/$name" \
"var/lib/koha/$name" \
"var/log/koha/$name"
echo "Done."