#!/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 . set -e # include helper functions if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then . "/usr/share/koha/bin/koha-functions.sh" else echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2 exit 1 fi # Make sure the files we create are not accessible by anyone else. umask 0077 usage() { local scriptname=$(basename $0) cat < "$schemadump" chown "root:$name-koha" "$schemadump" chmod g+r "$schemadump" else [ "$quiet" = "no" ] && echo "* DB to $dbdump" mysqldump $dbflag --host="$mysqlhost" --single-transaction \ --user="$mysqluser" --password="$mysqlpass" "$mysqldb" | gzip > "$dbdump" chown "root:$name-koha" "$dbdump" chmod g+r "$dbdump" instancefile="$name.conf" # Dump configs, logs, etc. metadump="$backupdir/$name-$date.tar.gz" output="* configs, logs" if [ "$exclude_indexes" = "yes" ]; then excludes="--exclude=var/lib/koha/$name/biblios \ --exclude=var/lib/koha/$name/authorities" fi if [ "$uploaded_files" = "yes" ]; then # Remove leading / uploaded_files_dir=$(echo $(get_upload_path $name) | cut -c 2-) output="$output, uploaded files" fi if [ "$uploaded_temp_files" = "yes" ]; then # Remove leading / tempdir=$(echo $(get_tmp_path $name) | cut -c 2-) uploaded_temp_files_dir="$tempdir/koha_${name}_upload" if ! [ -d /$uploaded_temp_files_dir ]; then mkdir /$uploaded_temp_files_dir fi output="$output, uploaded temporary files" fi output="$output to $metadump" [ "$quiet" = "no" ] && echo "$output" if [ "$exclude_logs" = "yes" ]; then tar -czf "$metadump" -C / $excludes \ "etc/koha/sites/$name" \ "etc/apache2/sites-available/$instancefile" \ "etc/apache2/sites-enabled/$instancefile" \ "var/lib/koha/$name" \ $uploaded_files_dir \ $uploaded_temp_files_dir chown "root:$name-koha" "$metadump" chmod g+r "$metadump" else tar -czf "$metadump" -C / $excludes \ "etc/koha/sites/$name" \ "etc/apache2/sites-available/$instancefile" \ "etc/apache2/sites-enabled/$instancefile" \ "var/lib/koha/$name" \ "var/log/koha/$name" \ $uploaded_files_dir \ $uploaded_temp_files_dir chown "root:$name-koha" "$metadump" chmod g+r "$metadump" fi [ "$quiet" = "no" ] && echo "Done." fi } # Default values quiet="no" exclude_indexes="no" without_db_name="no" schema_only="no" exclude_logs="no" while [ $# -gt 0 ]; do case "$1" in --schema-only) schema_only="yes" shift ;; --exclude-indexes) exclude_indexes="yes" shift ;; --exclude-logs) exclude_logs="yes" shift ;; --without-db-name) without_db_name="yes" shift ;; --uploaded_files) uploaded_files="yes" shift ;; --uploaded_temp_files) uploaded_temp_files="yes" shift ;; -h|--help) usage ; exit 0 ;; -q|--quiet) quiet="yes" shift ;; -*) die "Error: invalid option switch ($1)" ;; *) # We expect the remaining stuff are the instance names break ;; esac done # Read instance names if [ $# -gt 0 ]; then # We have at least one instance name for name in "$@"; do if is_instance $name; then dump_instance $name else if [ "$quiet" = "no" ]; then die "Error: Invalid instance name $name" else exit 1 fi fi done else if [ "$quiet" = "no" ]; then die "Error: you must provide at least one instance name" else exit 1 fi fi exit 0