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 made ninjahelper create files with mode 600 rather than 000
changed subversion handler to use svnadmin hotcopy instead of changed subversion handler to use svnadmin hotcopy instead of
the unsupported hot-copy.py script, which was moved in Debian the unsupported hot-copy.py script, which was moved in Debian
update rdiff ninjahelper to detect and auto-install rdiff-backup update rdiff ninjahelper
on the remote machine if possible 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 version 0.9 -- October 19 2005
*** IMPORTANT CHANGE, UPGRADE AT ONCE *** *** IMPORTANT CHANGE, UPGRADE AT ONCE ***

View File

@ -104,7 +104,7 @@ then
fi fi
# check the connection at the source and destination # 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 $sourceuser $sourcehost
test_connection $destuser $desthost test_connection $destuser $desthost
fi fi

View File

@ -1,4 +1,3 @@
HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup"
declare -a rdiff_includes declare -a rdiff_includes
@ -112,12 +111,58 @@ do_ssh_con() {
echo "Hit return to continue." echo "Hit return to continue."
read read
fi 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() { do_rdiff_con() {
echo "Testing to make sure destination has rdiff-backup installed and is compatible." 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 ] if [ $? -ne 0 ]
then then
echo $remote_result | grep -q "command not found" echo $remote_result | grep -q "command not found"