enabled old backup removal
[outofuni/backup.git] / bin / backup
index 9826687..b758e14 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 function log {
-       conf=`basename $config | sed 's/\.config$//'`
+       conf=`basename $config | sed 's/\.conf$//'`
        [ "$dolog" = "1" ] && echo "`date` - $@" >> $logdir/${conf}.log
 }
 
@@ -96,6 +96,7 @@ mkdir -p $cbd
 rsync="rsync -azR --delete --bwlimit=$bandwidth"
 
 ob=""
+lpb=""
 for pb in $backupdir/[0-9]*; do
        bdd=`basename $pb`
        if [ ! -f $backupdir/.$bdd ]; then
@@ -103,47 +104,67 @@ for pb in $backupdir/[0-9]*; do
                        rm -rf $cbd
                        mv $pb $cbd
                        log continuing $pb as $cbd ...
-               fi
-
-               rsrc=""
-               for dir in $homedirs; do
-                       rsrc="$rsrc :/home/$user/$dir"
-               done
-               rsrc="`echo $rsrc | sed 's/^\ //'`"
-               for dir in $extradirs; do
-                       rsrc="$rsrc :$dir"
-               done
-               [ ! -z "$homedirs" ] && \
-                       log backing up home directories $homedirs ...
-               [ ! -z "$extradirs" ] && \
-                       log backing up directories $extradirs ...
-               $rsync $user@$remote$rsrc $cbd
-               ret=$?
-               if [ "$ret" != "0" ]; then
-                       log backup terminated before completion ...
-                       exit -50
-               fi
-               
-               touch $backupdir/.`basename $cbd`
-               log "backup `basename $cbd` completed :)"
-       else
-               if [ "$pb" = "$cbd" ]; then
-                       log backup $bdd found completed ...
+               else
+                       if [ ! -z "$lpb" ]; then
+                               rm -rf $cbd
+                               cp -r $lpb $cbd
+                               log "starting backup $today from $lpb ..."
+                       else
+                               log starting backup from scratch ...
+                       fi
                fi
        fi
+       lpb=$pb
        ob="$ob $pb"
 done
 
+if [ ! -f $backupdir/.$today ]; then
+       rsrc=""
+       for dir in $homedirs; do
+               rsrc="$rsrc :/home/$user/$dir"
+       done
+       rsrc="`echo $rsrc | sed 's/^\ //'`"
+       for dir in $extradirs; do
+               rsrc="$rsrc :$dir"
+       done
+       [ ! -z "$homedirs" ] && \
+               log backing up home directories $homedirs ...
+       [ ! -z "$extradirs" ] && \
+               log backing up directories $extradirs ...
+       $rsync $user@$remote$rsrc $cbd
+       ret=$?
+       if [ "$ret" != "0" ]; then
+               log backup terminated before completion ...
+               exit -50
+       fi
+       
+       touch $backupdir/.$today
+       log "backup $today completed :)"
+else
+       log backup $bdd found completed ...
+fi
+
+[ -z "$replicas" ] && replicas=3
+[ -z "$oldest" ] && oldest=0
+
 cob=`echo $ob | wc -w`
 if [ $cob -gt $replicas ]; then
        ((numdel=cob-replicas))
        todel="`echo $ob | cut -d ' ' -f 1-${numdel}`"
-       log to delete: $todel
-       #for dirdel in $todel; do
-       #       bdd=`basename $dirdel`
-       #       rm -r $dirdel
-       #       rm $backupdir/$bdd
-       #done
+       for dirdel in $todel; do
+               past=`basename $dirdel`
+               ns=`date --date="$today" +%s`
+               ps=`date --date="$past" +%s`
+               ((delta=(ns-ps)/86400))
+               if [ $delta -gt $oldest ]; then
+                       log "deleting $dirdel ($delta days old) ..."
+                       bdd=`basename $dirdel`
+                       rm -r $dirdel
+                       rm $backupdir/.$bdd
+               else
+                       log "keeping $dirdel ($delta days old) ..."
+               fi
+       done
 fi
 
 exit 0