#!/bin/sh # # koha-restore: restore a Koha site from a dump (from koha-dump) # 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 . set -e die() { echo "$@" 1>&2 exit 1 } # Parse command line. [ "$#" = 2 ] || die "Usage: $0 sqldump configdump" sqldump="$1" configdump="$2" # Verify that no files in the config dump exist on the filesystem. anyexists=no tar -tf "$configdump" | while read x do if [ -e "/$x" ] then anyexists=yes echo "ERROR: File exists: /$x" 1>&2 fi done if [ "$anyexists" = yes ] then die "Config dump $configdump has files that exist on the filesystem." fi # Create user and group. name=$(tar tf "$configdump" | sed -n '/^etc\/koha\/sites\/\([^/]*\)\/$/s//\1/p') username="$name-koha" adduser --no-create-home --disabled-login --gecos "Koha instance $username" \ --home "/var/lib/koha/$name" --quiet "$username" # Create dirs. Some of them will be in the tarball, but not all, e.g., # /var/run and /var/lock. koha-create-dirs "$name" # Unpack tarball. tar -C / -xf "$configdump" # Re-create database and database user. mysqldb="koha_$name" mysqluser="koha_$name" mysqlpwd="$( xmlstarlet sel -t -v 'yazgfs/config/pass' /etc/koha/sites/$name/koha-conf.xml )" zcat "$sqldump" | mysql --defaults-extra-file=/etc/mysql/koha-common.cnf mysql --defaults-extra-file=/etc/mysql/koha-common.cnf <