X-Git-Url: https://hackdaworld.org/gitweb/?p=outofuni%2Fbackup.git;a=blobdiff_plain;f=bin%2Fbackup;h=b758e14f7d464a473c1fb258ade844346e2f1e1a;hp=982668745360343c55a32074484454f0c6705fb6;hb=26b498357009fee67377a8300db277d3a6c3ef02;hpb=dded1d875778985fd06ed58b5537e3604979835b diff --git a/bin/backup b/bin/backup index 9826687..b758e14 100755 --- a/bin/backup +++ b/bin/backup @@ -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