diff options
author | Micah Anderson <micah@riseup.net> | 2005-11-05 23:07:19 +0000 |
---|---|---|
committer | Micah Anderson <micah@riseup.net> | 2005-11-05 23:07:19 +0000 |
commit | 0e1bd269884c234dd76b00fa30bae674e82892bf (patch) | |
tree | ef4709a4b997e9ce897f6f8786a22772ab1052be | |
parent | 5f6dc7d1b9eafb760f29abb9f87cccaf44845020 (diff) | |
download | backupninja-0e1bd269884c234dd76b00fa30bae674e82892bf.tar.gz backupninja-0e1bd269884c234dd76b00fa30bae674e82892bf.tar.bz2 |
Added remote destination directory checking and auto creation if doesn't exist.
Also fixed a bug in the rdiff handler that caused a unary operation error if
the variable wasn't fixed
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | handlers/rdiff | 2 | ||||
-rw-r--r-- | handlers/rdiff.helper | 51 |
3 files changed, 53 insertions, 6 deletions
@@ -8,8 +8,10 @@ version 0.9.1 -- unreleased made ninjahelper create files with mode 600 rather than 000 changed subversion handler to use svnadmin hotcopy instead of the unsupported hot-copy.py script, which was moved in Debian - update rdiff ninjahelper to detect and auto-install rdiff-backup - on the remote machine if possible + update rdiff ninjahelper + now detects and auto-install rdiff-backup on the remote + machine if possible, also tests the remote backup directory + and offers to create it if it doesn't exist version 0.9 -- October 19 2005 *** IMPORTANT CHANGE, UPGRADE AT ONCE *** diff --git a/handlers/rdiff b/handlers/rdiff index 9de8650..05aacc3 100644 --- a/handlers/rdiff +++ b/handlers/rdiff @@ -104,7 +104,7 @@ then fi # check the connection at the source and destination -if [ "$testconnect" == "yes" -o $test ]; then +if [ "$testconnect" = "yes" ] || [ "${test}" -eq 1 ]; then test_connection $sourceuser $sourcehost test_connection $destuser $desthost fi diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper index c691848..0bd982c 100644 --- a/handlers/rdiff.helper +++ b/handlers/rdiff.helper @@ -1,4 +1,3 @@ - HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" declare -a rdiff_includes @@ -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 action wizard: success" "Creation of the remote destination directory was a success!" + remote_status=0 + ;; + 1) + msgBox "rdiff action wizard: 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 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." + remote_status=1 + ;; + *) + msgBox "rdiff action wizard: 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" |