aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2005-11-05 23:07:19 +0000
committerMicah Anderson <micah@riseup.net>2005-11-05 23:07:19 +0000
commit0e1bd269884c234dd76b00fa30bae674e82892bf (patch)
treeef4709a4b997e9ce897f6f8786a22772ab1052be
parent5f6dc7d1b9eafb760f29abb9f87cccaf44845020 (diff)
downloadbackupninja-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--ChangeLog6
-rw-r--r--handlers/rdiff2
-rw-r--r--handlers/rdiff.helper51
3 files changed, 53 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 03b475a..70f5880 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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"