bugfixes + introduced cipher, added hannah config
[outofuni/backup.git] / bin / backup
index 945667c..191d5be 100755 (executable)
@@ -29,6 +29,8 @@ bandwidth=`grep ^bandwidth $config | cut -d ' ' -f 2`
 bwconn="`grep ^bandwidth $config | cut -d ' ' -f 3-`"
 compression=`grep ^compression $config | cut -d ' ' -f 2`
 compconn="`grep ^compression $config | cut -d ' ' -f 3-`"
+cipher=`grep ^cipher $config | cut -d ' ' -f 2`
+ciconn=`grep ^cipher $config | cut -d ' ' -f 3-`
 logdir=`grep ^logdir $config | cut -d ' ' -f 2`
 
 dolog=0
@@ -74,13 +76,28 @@ if [ ! -z "$bandwidth" ]; then
                ch=`echo $bwpair | cut -d ':' -f 1`
                if [[ "$remote" == "$ch"* ]]; then
                        bwl=`echo $cpair | cut -d ':' -f 2`
-                       [ ! -z "$bwl" ]] && bw=$bwl
+                       [ ! -z "$bwl" ] && bw=$bwl
                fi
        done
 fi
-rbw="--bandwidth=$bw"
+rbw="--bwlimit=$bw"
 log applying bandwidth of $bw ...
 
+ciph=""
+if [ ! -z "$cipher" ]; then
+       ciph=$cipher
+       for cipair in "$ciconn"; do
+               ch=`echo $cipair | cut -d ':' -f 1`
+               if [[ "$remote" == "$ch"* ]]; then
+                       cl=`echo $cipair | cut -d ':' -f 2`
+                       [ ! -z "$cl" ] && ciph=$cl
+               fi
+       done
+fi
+if [ ! -z "$ciph" ]; then
+       log using cipher $ciph ...
+fi
+
 if [ ! -d $data ]; then
        log no data directory ...
        exit -4
@@ -89,33 +106,36 @@ log backing up to $data ...
 
 today=`date -I`
 backupdir=$data/${user}_at_${host}
-
 cbd=$backupdir/$today
-mkdir -p $cbd
-
-rsync="rsync -azR --delete --bwlimit=$bandwidth"
 
 ob=""
 lpb=""
 for pb in $backupdir/[0-9]*; do
+       [ ! -d $pb ] && continue
        bdd=`basename $pb`
        if [ ! -f $backupdir/.$bdd ]; then
                if [ "$pb" != "$cbd" ]; then
                        rm -rf $cbd
                        mv $pb $cbd
                        log continuing $pb as $cbd ...
-               else
-                       if [ ! -z "$lpb" ]; then
-                               rm -rf $cbd
-                               cp -r $lpb $cbd
-                               log "starting backup $today from $lpb ..."
-                       fi
                fi
+       else
+               lpb=$pb
+               ob="$ob $pb"
        fi
-       lpb=$pb
-       ob="$ob $pb"
 done
 
+
+if [ ! -d $cbd ]; then
+       if [ ! -z "$lpb" ]; then
+               cp -r $lpb $cbd
+               log starting backup $today from $lpb ...
+       else
+               mkdir -p $cbd
+               log starting backup $today from scratch ...
+       fi
+fi
+
 if [ ! -f $backupdir/.$today ]; then
        rsrc=""
        for dir in $homedirs; do
@@ -129,7 +149,15 @@ if [ ! -f $backupdir/.$today ]; then
                log backing up home directories $homedirs ...
        [ ! -z "$extradirs" ] && \
                log backing up directories $extradirs ...
-       $rsync $user@$remote$rsrc $cbd
+
+       if [ -z "$ciph" ]; then
+               rsync=(rsync -aR $rcomp --delete $rbw $user@$remote$rsrc $cbd)
+       else
+               rsync=(rsync -aR -e "ssh -c $ciph" $rcomp --delete)
+               rsync+=($rbw $user@$remote$rsrc $cbd)
+       fi
+       "${rsync[@]}"
+
        ret=$?
        if [ "$ret" != "0" ]; then
                log backup terminated before completion ...