X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Frdiff.helper;h=8642a42aab4b3d4719106365e75fb2a5d697b9f8;hb=bdc92b87e77ecb0eebda304ec32a3d41e8783cdd;hp=fdbdefe9ab5675b73df98b265d1bbec9a5fb0d87;hpb=f61431d37f51cf7a931dd3e7183f46d4c4965e5f;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper index fdbdefe..8642a42 100644 --- a/handlers/rdiff.helper +++ b/handlers/rdiff.helper @@ -1,4 +1,3 @@ - HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" declare -a rdiff_includes @@ -6,13 +5,13 @@ declare -a rdiff_excludes do_rdiff_dest() { set -o noglob - formBegin "rdiff action wizard" + formBegin "$rdiff_title" formItem "keep" "$rdiff_keep" formItem "dest_directory" "$rdiff_directory" formItem "dest_host" "$rdiff_host" formItem "dest_user" "$rdiff_user" formDisplay - [ $? = 1 ] && return; + [ $? = 0 ] || return IFS=$'' replyconverted=`echo $REPLY | tr '\n' :` @@ -33,7 +32,7 @@ do_rdiff_dest() { do_rdiff_src() { #echo ${rdiff_includes[@]} set -o noglob - formBegin "rdiff action wizard: includes" + formBegin "$rdiff_title: includes" for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do formItem include ${rdiff_includes[$i]} done @@ -41,19 +40,19 @@ do_rdiff_src() { formItem include formItem include formDisplay - [ $? = 1 ] && return; + [ $? = 0 ] || return unset rdiff_includes rdiff_includes=($REPLY) - formBegin "rdiff action wizard: excludes" + formBegin "$rdiff_title: excludes" for ((i=0; i < ${#rdiff_excludes[@]} ; i++)); do formItem exclude ${rdiff_excludes[$i]} done formItem exclude formItem exclude formDisplay - [ $? = 1 ] && return; + [ $? = 0 ] || return unset rdiff_excludes rdiff_excludes=($REPLY) @@ -63,20 +62,20 @@ do_rdiff_src() { set +o noglob } -do_ssh_con() { +do_rdiff_ssh_con() { IFS=$' \t\n' if [ "$_dest_done" = "" ]; then - msgBox "rdiff action wizard: error" "You must first configure the destination." + msgBox "$rdiff_title: error" "You must first configure the destination." return elif [ "$rdiff_user" = "" ]; then - msgBox "rdiff action wizard: error" "You must first configure the destination user." + msgBox "$rdiff_title: error" "You must first configure the destination user." return elif [ "$rdiff_host" = "" ]; then - msgBox "rdiff action wizard: error" "You must first configure the destination host." + msgBox "$rdiff_title: error" "You must first configure the destination host." return else - booleanBox "rdiff action wizard" "This step will create a ssh key for the local root user with no passphrase (if one does not already exist), and attempt to copy root's public ssh key to authorized_keys file of $rdiff_user@$rdiff_host. This will allow the local root to make unattended backups to $rdiff_user@$rdiff_host.\n\n\nAre you sure you want to continue?" - [ $? = 1 ] && return + booleanBox "$rdiff_title" "This step will create a ssh key for the local root user with no passphrase (if one does not already exist), and attempt to copy root's public ssh key to authorized_keys file of $rdiff_user@$rdiff_host. This will allow the local root to make unattended backups to $rdiff_user@$rdiff_host.\n\n\nAre you sure you want to continue?" + [ $? = 0 ] || return fi if [ ! -f /root/.ssh/id_dsa.pub -a ! -f /root/.ssh/id_rsa.pub ]; then @@ -97,10 +96,10 @@ do_ssh_con() { echo "Hit return to continue." read case $result in - 0 ) msgBox "rdiff action wizard: error" "Directories are writable: Probably just a typo the first time." ;; - 1 ) msgBox "rdiff action wizard: error" "Connected successfully to $rdiff_user@$rdiff_host, but unable to write. Check ownership and modes of ~$rdiff_user on $rdiff_host." ;; - 255 ) msgBox "rdiff action wizard: 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 action wizard: error" "Unexpected error." ;; + 0 ) msgBox "$rdiff_title: error" "Directories are writable: Probably just a typo the first time." ;; + 1 ) msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but unable to write. Check ownership and modes of ~$rdiff_user on $rdiff_host." ;; + 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 else @@ -112,12 +111,58 @@ do_ssh_con() { echo "Hit return to continue." read fi -do_rdiff_con + # 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 + ssh $rdiff_user@$rdiff_host "test -w $rdiff_directory" + if [ $? -ne 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 + 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 + 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 + ;; + esac + return + fi + fi + + if [ $remote_status -ne 1 ] + then + do_rdiff_con + fi } do_rdiff_con() { echo "Testing to make sure destination has rdiff-backup installed and is compatible." - remote_result=`rdiff-backup --test-server $rdiff_user@$rdiff_host::/ 2>&1 >&-` + remote_result=`/usr/bin/rdiff-backup --test-server $rdiff_user@$rdiff_host::/ 2>&1 >&-` if [ $? -ne 0 ] then echo $remote_result | grep -q "command not found" @@ -134,17 +179,17 @@ do_rdiff_con() { read case $result in 0) - msgBox "rdiff action wizard: success" "Installation of rdiff-backup was a success!" + msgBox "$rdiff_title: success" "Installation of rdiff-backup was a success!" do_rdiff_con ;; 1) - msgBox "rdiff action wizard: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to install the package for some reason." + msgBox "$rdiff_title: error" "Connected successfully to $rdiff_user@$rdiff_host, but was unable to install the package for some reason." ;; 255) - msgBox "rdiff action wizard: 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" "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 action wizard: error" "Unexpected error." + msgBox "$rdiff_title: error" "Unexpected error." ;; esac return @@ -189,10 +234,10 @@ keep = $rdiff_keep EOF set -o noglob for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do - echo include = ${rdiff_includes[$i]} + echo "include = ${rdiff_includes[$i]}" >> $next_filename done - for ((i=0; i < ${#rdiff_includes[@]} ; i++)); do - echo exclude = ${rdiff_excludes[$i]} + for ((i=0; i < ${#rdiff_excludes[@]} ; i++)); do + echo exclude = ${rdiff_excludes[$i]} >> $next_filename done set +o noglob cat >> $next_filename <