266f2a3a9f
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>
68 lines
2 KiB
Bash
Executable file
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."
|