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
This commit is contained in:
Micah Anderson 2005-11-05 23:07:19 +00:00
parent 5f6dc7d1b9
commit 0e1bd26988
3 changed files with 53 additions and 6 deletions

View File

@ -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 ***

View File

@ -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

View File

@ -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"