. fixed errors in create remote dir

. code formatting cleanup (three spaces indent)
. fixed bug which caused only first include/exclude dir to
  have "include = "
. fixed globbing bug with exclude
This commit is contained in:
Elijah Saxon 2006-01-09 00:23:05 +00:00
parent 413a3be0ac
commit 83b09d71e9

View File

@ -4,6 +4,8 @@ HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup"
declare -a rdiff_includes
declare -a rdiff_excludes
declare -a rdiff_vsincludes
declare -a rdiff_vsexcludes
# FUNCTIONS
@ -11,11 +13,9 @@ do_rdiff_host_includes() {
set -o noglob
# choose the files to backup
REPLY=
while [ -z "$REPLY" ]
do
while [ -z "$REPLY" ]; do
formBegin "$rdiff_title - host system: includes"
for ((i=0; i < ${#rdiff_includes[@]} ; i++))
do
for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do
formItem include ${rdiff_includes[$i]}
done
formItem include
@ -24,7 +24,7 @@ do_rdiff_host_includes() {
formDisplay
[ $? = 0 ] || return
unset rdiff_includes
rdiff_includes="$REPLY"
rdiff_includes=($REPLY)
done
set +o noglob
}
@ -45,13 +45,12 @@ do_rdiff_vserver() {
for i in $rdiff_vsincludes; do
formItem include "$i"
done
formItem include ""
formItem include ""
formItem include ""
formDisplay
[ $? = 0 ] || return 1
rdiff_vsincludes="$REPLY"
rdiff_vsincludes=($REPLY)
done
set +o noglob
@ -64,14 +63,12 @@ do_rdiff_excludes() {
do
formItem exclude ${rdiff_excludes[$i]}
done
formItem exclude
formItem exclude
formDisplay
[ $? = 0 ] || return
unset rdiff_excludes
rdiff_excludes="$REPLY"
rdiff_excludes=($REPLY)
set +o noglob
}
@ -104,9 +101,7 @@ do_rdiff_src() {
}
do_rdiff_dest() {
local replyconverted
local thereply
declare -a tmp_array
set -o noglob
REPLY=
@ -119,18 +114,11 @@ do_rdiff_dest() {
formItem "dest_user" "$rdiff_user"
formDisplay
[ $? = 0 ] || return
IFS=$''
replyconverted=`echo $REPLY | tr '\n' :`
IFS=$':'
thereply=($replyconverted)
IFS=$' \t\n'
rdiff_keep=${thereply[0]}
rdiff_directory=${thereply[1]}
rdiff_host=${thereply[2]}
rdiff_user=${thereply[3]}
tmp_array=($REPLY)
rdiff_keep=${tmp_array[0]}
rdiff_directory=${tmp_array[1]}
rdiff_host=${tmp_array[2]}
rdiff_user=${tmp_array[3]}
done
set +o noglob
@ -139,6 +127,8 @@ do_rdiff_dest() {
}
do_rdiff_ssh_con() {
local remote_status="ok"
IFS=$' \t\n'
if [ "$_dest_done" = "" ]; then
msgBox "$rdiff_title: error" "You must first configure the destination."
@ -187,93 +177,66 @@ do_rdiff_ssh_con() {
echo "Hit return to continue."
read
fi
# test to see if the remote rdiff backup directory exists and is writable
echo "Testing to see if remote rdiff backup directory exists and is writable"
ssh $rdiff_user@$rdiff_host "test -d ${rdiff_directory}"
if [ $? -eq 0 ]
then
if [ $? = 0 ]; then
ssh $rdiff_user@$rdiff_host "test -w $rdiff_directory"
if [ $? -ne 0 ]
then
if [ $? != 0 ]; then
msgBox "destination directory is not writable!" "The remote destination directory is not writable by the user you specified. Please fix the permissions on the directory and then try again."
remote_status=1
else
remote_status=0
remote_status=failed
fi
else
booleanBox "Remote directory does not exist" "The destination backup directory does not exist, do you want me to create it for you?"
if [ $? = 0 ]
then
if [ $? = 0 ]; then
ssh $rdiff_user@$rdiff_host "mkdir -p ${rdiff_directory}"
result=$?
echo "Hit return to continue."
read
case $result in
0)
msgBox "$rdiff_title: success" "Creation of the remote destination directory was a success!"
remote_status=0
;;
1)
msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to create the destination directory, check the directory permissions."
remote_status=1
;;
255)
msgBox "$rdiff_title: error" "Failed to connect to $rdiff_user@$rdiff_host. Check hostname, username, and password. Also, make sure sshd is running on the destination host."
remote_status=1
;;
*)
msgBox "$rdiff_title: error" "Unexpected error."
remote_status=1
;;
0) msgBox "$rdiff_title: success" "Creation of the remote destination directory was a success!";;
1) msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to create the destination directory, check the directory permissions."
remote_status=failed;;
255) msgBox "$rdiff_title: error" "Failed to connect to $rdiff_user@$rdiff_host. Check hostname, username, and password. Also, make sure sshd is running on the destination host."
remote_status=failed;;
*) msgBox "$rdiff_title: error" "Unexpected error."
remote_status=failed;;
esac
return
fi
fi
if [ $remote_status -ne 1 ]
then
if [ "$remote_status" = "ok" ]; then
do_rdiff_con
fi
}
do_rdiff_con() {
echo "Checking for local install of rdiff-backup"
require_packages rdiff-backup
echo "Testing to make sure destination has rdiff-backup installed and is compatible."
remote_result=`/usr/bin/rdiff-backup --test-server $rdiff_user@$rdiff_host::/ 2>&1 >&-`
if [ $? -ne 0 ]
then
if [ $? -ne 0 ]; then
echo $remote_result | grep -q "command not found"
if [ $? -eq 0 ]
then
if [ "$rdiff_user" = "root" ]
then
if [ $? -eq 0 ]; then
if [ "$rdiff_user" = "root" ]; then
booleanBox "install rdiff-backup?" "It seems like the remote machine does not have rdiff-backup installed, I can attempt to install rdiff-backup on the remote machine.\n\n\nDo you want me to attempt this now?"
if [ $? = 0 ]
then
if [ $? = 0 ]; then
ssh $rdiff_user@$rdiff_host 'apt-get install rdiff-backup'
result=$?
echo "Hit return to continue."
read
case $result in
0)
msgBox "$rdiff_title: success" "Installation of rdiff-backup was a success!"
do_rdiff_con
;;
1)
msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to install the package for some reason."
;;
255)
msgBox "$rdiff_title: error" "Failed to connect to $rdiff_user@$rdiff_host. Check hostname, username, and password. Also, make sure sshd is running on the destination host."
;;
*)
msgBox "$rdiff_title: error" "Unexpected error."
;;
0) msgBox "$rdiff_title: success" "Installation of rdiff-backup was a success!"
do_rdiff_con;;
1) msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to install the package for some reason.";;
255) msgBox "$rdiff_title: error" "Failed to connect to $rdiff_user@$rdiff_host. Check hostname, username, and password. Also, make sure sshd is running on the destination host.";;
*) msgBox "$rdiff_title: error" "Unexpected error.";;
esac
return
fi
else
booleanBox "install rdiff-backup" "Please install rdiff-backup on the remote machine, this cannot be done automatically, as the remote user in your configuration is not root. \n\nIf you have installed rdiff-backup on the remote machine and you are getting this error, then there is a version incompatibility between that version and the local version.\n\nPlease resolve this problem and then try connecting again.\n\n\n\nTry connecting again?"
if [ $? = 0 ]
then
if [ $? = 0 ]; then
do_rdiff_con
else
return
@ -281,8 +244,7 @@ do_rdiff_con() {
fi
else
msgBox "incompatible versions of rdiff-backup" "It looks like rdiff-backup is installed on the remote machine, but it may be an incompatible version with the one installed locally, or something else is amiss.\n\nPlease resolve this problem and then try connecting again.\n\n\nTry connecting again?"
if [ $? = 0 ]
then
if [ $? = 0 ]; then
do_rdiff_con
else
return
@ -308,21 +270,16 @@ do_rdiff_finish() {
type = local
keep = $rdiff_keep
EOF
if [ "$host_or_vservers" == host -o "$host_or_vservers" == both ]
then
## includes ##
if [ "$host_or_vservers" == host -o "$host_or_vservers" == both ]; then
set -o noglob
for ((i=0; i < ${#rdiff_includes[@]} ; i++))
do
for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do
echo "include = ${rdiff_includes[$i]}" >> $next_filename
done
set +o noglob
fi
if [ "$host_or_vservers" == vservers -o "$host_or_vservers" == both ]
then
if [ "$host_or_vservers" == vservers -o "$host_or_vservers" == both ]; then
cat >> $next_filename <<EOF
#
# If vservers = yes in /etc/backupninja.conf then the following variables can
@ -341,7 +298,6 @@ EOF
# Vserver paths are derived from $VROOTDIR.
EOF
set -o noglob
echo -e "vsnames = \"$selected_vservers\"\n" >> $next_filename
for i in $rdiff_vsincludes; do
@ -350,10 +306,9 @@ EOF
set +o noglob
fi
# excludes
for ((i=0; i < ${#rdiff_excludes[@]} ; i++))
do
## excludes ##
set -o noglob
for ((i=0; i < ${#rdiff_excludes[@]} ; i++)); do
echo exclude = ${rdiff_excludes[$i]} >> $next_filename
done
set +o noglob
@ -374,7 +329,6 @@ EOF
}
rdiff_main_menu() {
while true; do
srcitem="choose files to include & exclude $_src_done"
destitem="configure backup destination $_dest_done"
@ -387,7 +341,6 @@ rdiff_main_menu() {
finish "finish and create config file"
[ $? = 0 ] || return
result="$REPLY"
case "$result" in
"src") do_rdiff_src;;
"dest") do_rdiff_dest;;
@ -402,12 +355,10 @@ rdiff_main_menu() {
fi
;;
esac
done
}
rdiff_wizard() {
require_packages rdiff-backup
# Global variables
rdiff_title="rdiff-backup action wizard"