mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-11-08 20:02:32 +01:00
aefed90a3b
vserver support added, database and dump directory selection added
210 lines
5.9 KiB
Plaintext
210 lines
5.9 KiB
Plaintext
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
|
|
|
|
# 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
|
|
} |