HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" do_rdiff_dest() { formBegin "rdiff action wizard" formItem "keep" "$rdiff_keep" formItem "dest_directory" "$rdiff_directory" formItem "dest_host" "$rdiff_host" formItem "dest_user" "$rdiff_user" formDisplay [ $? = 1 ] && return; set -- $REPLY rdiff_keep=$1 rdiff_directory=$2 rdiff_host=$3 rdiff_user=$4 _dest_done="(DONE)" setDefault conn } do_rdiff_src() { formBegin "rdiff action wizard: includes" formItem include /var/spool/cron/crontabs formItem include /var/backups formItem include /etc formItem include /root formItem include /home formItem include '/usr/local/*bin' formItem include '/var/lib/dpkg/status*' formItem include formItem include formItem include formDisplay [ $? = 1 ] && return; rdiff_includes= set -o noglob for i in $REPLY; do [ "$i" != "" ] && rdiff_includes="$rdiff_includes\ninclude = $i" done set +o noglob formBegin "rdiff action wizard: excludes" formItem exclude '/home/*/.gnupg' formItem exclude formItem exclude formDisplay [ $? = 1 ] && return; rdiff_excludes= set -o noglob for i in $REPLY; do [ "$i" != "" ] && rdiff_excludes="$rdiff_excludes\nexclude = $i" done set +o noglob _src_done="(DONE)" setDefault dest } do_rdiff_con() { if [ "$_dest_done" = "" ]; then msgBox "rdiff action wizard: error" "You must first configure the destination" 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. Are you sure you want to continue?" [ $? = 1 ] && return fi if [ ! -f /root/.ssh/id_dsa.pub -a ! -f /root/.ssh/id_rsa.pub ]; then echo "Creating local root's ssh key" ssh-keygen -t dsa -f /root/.ssh/id_dsa -N "" echo "Done. hit return to continue" read fi ssh -o PreferredAuthentications=publickey $rdiff_host -l $rdiff_user "exit" 2> /dev/null if [ $? -ne 0 ]; then echo "Copying root's public ssh key to authorized_keys of $rdiff_user@$rdiff_host. Specify the password for user $rdiff_user@$rdiff_host." ssh-copy-id -i /root/.ssh/id_[rd]sa.pub $rdiff_user@$rdiff_host if [ $? -ne 0 ]; then echo "Couldn't copy root's public ssh key to authorized_keys of $rdiff_user@$rdiff_host. This time, testing whether directory is writable." ssh $rdiff_user@$rdiff_host 'test -w .ssh || test -w .' case $? 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." ;; * ) msgBox "rdiff action wizard: error" "Unexpected error." ;; esac return else echo "Done. hit return to continue" read fi else echo "root@localhost is already in authorized_keys of $rdiff_user@$rdiff_host. hit return to continue" read fi _con_done="(DONE)" setDefault finish } do_rdiff_finish() { get_next_filename $configdirectory/90.rdiff cat > $next_filename <> $next_filename echo -e "$rdiff_excludes" >> $next_filename cat >> $next_filename <