-
HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup"
declare -a rdiff_includes
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' :`
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
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)
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
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
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"
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
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 <<EOF
destitem="configure backup destination $_dest_done"
conitem="set up ssh keys and test remote connection $_con_done"
advitem="edit advanced settings $_adv_done"
- menuBox "rdiff action wizard" "choose a step:" \
+ menuBox "$rdiff_title" "choose a step:" \
src "$srcitem" \
dest "$destitem" \
conn "$conitem" \
finish "finish and create config file"
- [ $? = 1 ] && return;
+ [ $? = 0 ] || return
result="$REPLY"
case "$result" in
"src") do_rdiff_src;;
"dest") do_rdiff_dest;;
- "conn") do_ssh_con;;
+ "conn") do_rdiff_ssh_con;;
"adv") do_rdiff_adv;;
"finish")
if [[ "$_con_done$_dest_done$_src_done" != "(DONE)(DONE)(DONE)" ]]; then
- msgBox "rdiff action wizard" "You cannot create the configuration file until the other steps are completed."
+ msgBox "$rdiff_title" "You cannot create the configuration file until the other steps are completed."
else
do_rdiff_finish
return
rdiff_wizard() {
require_packages rdiff-backup
+
+ # Global variables
+ rdiff_title="rdiff-backup action wizard"
_src_done=
_dest_done=
_con_done=
rdiff_directory=/backup/`hostname`
rdiff_user=
rdiff_host=
+ set -o noglob
rdiff_includes=(/var/spool/cron/crontabs /var/backups /etc /root /home /usr/local/*bin /var/lib/dpkg/status*)
rdiff_excludes=(/home/*/.gnupg)
+ set +o noglob
rdiff_main_menu
}