mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-11-10 04:42:31 +01:00
78884142e7
The modelines added match the emacs lines already present and also set the filetype to sh (just like the emacs lines).
219 lines
6.2 KiB
Bash
219 lines
6.2 KiB
Bash
# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
|
|
# vim: set filetype=sh sw=3 sts=3 expandtab autoindent:
|
|
|
|
HELPERS="$HELPERS mysql:mysql_database_backup"
|
|
|
|
do_mysql_vserver() {
|
|
choose_one_vserver "$mysql_title"
|
|
[ $? = 0 ] || return 1
|
|
mysql_vsname="vsname = $REPLY"
|
|
}
|
|
|
|
do_mysql_databases() {
|
|
REPLY=
|
|
while [ -z "$REPLY" ]; do
|
|
formBegin "$mysql_title: databases"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formItem "Database:"
|
|
formDisplay
|
|
[ $? = 0 ] || return 1
|
|
mysql_databases="databases = "
|
|
for i in $REPLY; do
|
|
[ -n "$i" ] && mysql_databases="$mysql_databases $i"
|
|
done
|
|
done
|
|
}
|
|
|
|
do_mysql_password() {
|
|
inputBox "$mysql_title" "specify a mysql user:"
|
|
[ $? = 1 ] && return
|
|
user=$REPLY
|
|
inputBox "$mysql_title" "specify the mysql user's password:"
|
|
[ $? = 1 ] && return
|
|
password=$REPLY
|
|
do_mysql_final "dbusername = $user\ndbpassword = $password"
|
|
}
|
|
|
|
do_mysql_debian() {
|
|
_DISABLE_HOTCOPY=yes
|
|
do_mysql_final "configfile = /etc/mysql/debian.cnf"
|
|
}
|
|
|
|
do_mysql_user() {
|
|
inputBox "$mysql_title" "what system user does mysql backup use?"
|
|
[ $? = 1 ] && return
|
|
do_mysql_final "user = $REPLY"
|
|
}
|
|
|
|
do_mysql_final() {
|
|
if [ -z "$_DISABLE_HOTCOPY" ]; then
|
|
checkBox "$mysql_title" "check options" \
|
|
"sqldump" "create a backup using mysqldump (more compat)." no \
|
|
"hotcopy" "create a backup using mysqlhotcopy (faster)." yes \
|
|
"compress" "compress the sql output files" yes
|
|
status=$?
|
|
sqldump="sqldump = no"
|
|
hotcopy="hotcopy = no"
|
|
else
|
|
checkBox "$mysql_title" "check options" \
|
|
"compress" "compress the sql output files" yes
|
|
status=$?
|
|
sqldump="sqldump = yes"
|
|
hotcopy="hotcopy = no"
|
|
fi
|
|
|
|
[ $status = 1 ] && return;
|
|
result="$REPLY"
|
|
compress="compress = no"
|
|
for opt in $result; do
|
|
case $opt in
|
|
'"sqldump"') sqldump="sqldump = yes";;
|
|
'"hotcopy"') hotcopy="hotcopy = yes";;
|
|
'"compress"') compress="compress = yes";;
|
|
esac
|
|
done
|
|
get_next_filename $configdirectory/20.mysql
|
|
|
|
cat >> $next_filename <<EOF
|
|
### backupninja MySQL config file ###
|
|
|
|
# hotcopy = < yes | no > (default = no)
|
|
# make a backup of the actual database binary files using mysqlhotcopy.
|
|
$hotcopy
|
|
|
|
# sqldump = < yes | no > (default = no)
|
|
# make a backup using mysqldump. this creates text files with sql commands
|
|
# sufficient to recontruct the database.
|
|
#
|
|
$sqldump
|
|
|
|
# sqldumpoptions = <options>
|
|
# (default = --lock-tables --complete-insert --add-drop-table --quick --quote-names)
|
|
# arguments to pass to mysqldump
|
|
# sqldumpoptions = --add-drop-table --quick --quote-names
|
|
|
|
# compress = < yes | no > (default = yes)
|
|
# if yes, compress the sqldump output.
|
|
$compress
|
|
|
|
# dbhost = <host> (default = localhost)
|
|
|
|
EOF
|
|
cat >> $next_filename <<EOF
|
|
|
|
# backupdir = <dir> (default: /var/backups/mysql)
|
|
# where to dump the backups. hotcopy backups will be in a subdirectory
|
|
# 'hotcopy' and sqldump backups will be in a subdirectory 'sqldump'
|
|
$mysql_backupdir
|
|
|
|
# databases = <all | db1 db2 db3 > (default = all)
|
|
# which databases to backup. should either be the word 'all' or a
|
|
# space separated list of database names.
|
|
$mysql_databases
|
|
|
|
EOF
|
|
|
|
if [ $host_or_vservers == vservers ]
|
|
then
|
|
cat >> $next_filename <<EOF
|
|
#
|
|
# vsname = <vserver> (no default)
|
|
# vsname indicates which vserver to operate on, this is only used if
|
|
# vserver is set to yes in /etc/backupninja.conf
|
|
# NOTE: if you do not specify a vsname the host will be operated on
|
|
# alsoNOTE: if operating on a vserver, $VROOTDIR will be
|
|
# prepended to backupdir.
|
|
EOF
|
|
echo -e "$mysql_vsname\n" >> $next_filename
|
|
fi
|
|
|
|
echo -e $@ >> $next_filename
|
|
|
|
chmod 600 $next_filename
|
|
}
|
|
|
|
mysql_wizard() {
|
|
|
|
# Global variables
|
|
mysql_title="MySQL action wizard"
|
|
|
|
# backup the host system or a Vserver?
|
|
choose_host_or_one_vserver "$mysql_title"
|
|
[ $? = 0 ] || return 1
|
|
if [ $host_or_vservers == vservers ]
|
|
then
|
|
do_mysql_vserver
|
|
[ $? = 0 ] || return 1
|
|
fi
|
|
|
|
# backupdir
|
|
if [ $host_or_vservers == vservers ]
|
|
then
|
|
inputBox "$mysql_title" "Directory where to store the backups:`echo \"\n(Relative to chosen vserver's root directory)\"`" "/var/backups/mysql"
|
|
else
|
|
inputBox "$mysql_title" "Directory where to store the backups" "/var/backups/mysql"
|
|
fi
|
|
[ $? = 1 ] && return
|
|
mysql_backupdir="backupdir = $REPLY"
|
|
|
|
# databases
|
|
booleanBox "$mysql_title" "Do you want to backup all of the databases? `echo \"\n\nIf not, you'll be offered to choose individual databases to backup.\"`"
|
|
if [ $? = 0 ]; then
|
|
mysql_databases="databases = all"
|
|
else
|
|
do_mysql_databases
|
|
[ $? = 0 ] || return 1
|
|
fi
|
|
|
|
while true; do
|
|
_DISABLE_HOTCOPY=
|
|
menuBoxHelpFile "$mysql_title" "choose a mysql authentication method:" \
|
|
user "change to a linux user first." \
|
|
password "manually specify mysql user and password." \
|
|
debian "use default mysql user debian-sys-maint."
|
|
status=$?
|
|
if [ $status = 2 ]; then
|
|
# show help.
|
|
helptmp="/tmp/backupninja.help.$$"
|
|
cat > $helptmp <<EOF
|
|
To connect to mysql, backupninja must authenticate.
|
|
There are three possible authentication methods:
|
|
|
|
USER
|
|
With this method, you specify a system user. Backupninja will
|
|
then become this user before running mysqldump or mysqlhotcopy.
|
|
The result is that ~/.my.cnf is used for authentication.
|
|
|
|
PASSWORD
|
|
With this method, you manually specify a mysql user and
|
|
password in the backup action configuration.
|
|
|
|
DEBIAN
|
|
With this method, we use the debian-sys-maint user which is
|
|
already defined in /etc/mysql/debian.cnf. If you are running
|
|
debian, this is recommended, because no further configuration
|
|
is needed. The drawback is that this is incompatible with
|
|
mysqlhotcopy: you must use mysqldump.
|
|
EOF
|
|
dialog --textbox $helptmp 0 0
|
|
rm $helptmp
|
|
fi
|
|
|
|
[ $status = 1 ] && return;
|
|
result="$REPLY"
|
|
case "$result" in
|
|
"user") do_mysql_user;return;;
|
|
"password") do_mysql_password;return;;
|
|
"debian") do_mysql_debian;return;;
|
|
esac
|
|
done
|
|
}
|