| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/sh
- #
- # This script dumps your Bacula catalog in ASCII format
- # It works for MySQL, SQLite, and PostgreSQL
- #
- # $1 is the name of the database to be backed up and the name
- # of the output file (default = bacula).
- # $2 is the user name with which to access the database
- # (default = bacula).
- # $3 is the password with which to access the database or "" if no password
- # (default ""). WARNING!!! Passing the password via the command line is
- # insecure and should not be used since any user can display the command
- # line arguments and the environment using ps. Please consult your
- # MySQL or PostgreSQL manual for secure methods of specifying the
- # password.
- # $4 is the host on which the database is located
- # (default "")
- # $5 is the type of database
- #
- #
- default_db_type=sqlite3
- #
- # See if the fifth argument is a valid backend name.
- # If so the user overrides the default database backend.
- #
- if [ $# -ge 5 ]; then
- case $5 in
- sqlite3)
- db_type=$5
- ;;
- mysql)
- db_type=$5
- ;;
- postgresql)
- db_type=$5
- ;;
- ingres)
- db_type=$5
- ;;
- *)
- ;;
- esac
- fi
- #
- # If no new db_type is gives use the default db_type.
- #
- if [ -z "${db_type}" ]; then
- db_type="${default_db_type}"
- fi
- cd /var/lib/bacula
- rm -f $1.sql
- case ${db_type} in
- sqlite3)
- BINDIR=/usr/bin
- echo ".dump" | ${BINDIR}/sqlite3 $1.db >$1.sql
- ;;
- mysql)
- BINDIR=
- if test $# -gt 2; then
- MYSQLPASSWORD=" --password=$3"
- else
- MYSQLPASSWORD=""
- fi
- if test $# -gt 3; then
- MYSQLHOST=" --host=$4"
- else
- MYSQLHOST=""
- fi
- ${BINDIR}/mysqldump -u ${2}${MYSQLPASSWORD}${MYSQLHOST} -f --opt $1 >$1.sql
- ;;
- postgresql)
- BINDIR=
- if test $# -gt 2; then
- PGPASSWORD=$3
- export PGPASSWORD
- fi
- if test $# -gt 3; then
- PGHOST=" --host=$4"
- else
- PGHOST=""
- fi
- # you could also add --compress for compression. See man pg_dump
- exec ${BINDIR}/pg_dump -c $PGHOST -U $2 $1 >$1.sql
- ;;
- esac
- #
- # To read back a MySQL database use:
- # cd /var/lib/bacula
- # rm -f ${BINDIR}/../var/bacula/*
- # mysql <bacula.sql
- #
- # To read back a SQLite database use:
- # cd /var/lib/bacula
- # rm -f bacula.db
- # sqlite bacula.db <bacula.sql
- #
- # To read back a PostgreSQL database use:
- # cd /var/lib/bacula
- # dropdb bacula
- # createdb bacula -T template0 -E SQL_ASCII
- # psql bacula <bacula.sql
- #
|