diff --git a/src/scripts/backup_nocloud.sh b/src/scripts/backup_nocloud.sh index f6e4908203a1af3482b1c7dda2578b984763a80b..2817ee320d110455b7df13fb98826f5f324e97b7 100755 --- a/src/scripts/backup_nocloud.sh +++ b/src/scripts/backup_nocloud.sh @@ -43,10 +43,11 @@ premier(){ # Supprime la sauvegarde la plus ancienne supprimer_anciennes_sauvegardes(){ - dir=`premier \`/bin/ls $dest/.. | grep $postfix \`` + dir=`premier \`/bin/ls $parent_dir | grep $postfix \`` [ -z "$dir" ] && return 1 do_log "Plus de place suppression de la sauvegarde la plus ancienne: $dir" - rm -rf $dest/../$dir + rm -rf $parent_dir/$dir + return $? } do_log(){ @@ -122,6 +123,20 @@ sauvegarde_seafile(){ /srv/$seafile/seafile-server-latest/seaf-fuse.sh stop } +# tente de liberer de l'espace si c'est pertinent puis rejoue les commandes +# passées en arguments +liberer_espace(){ + if [ "`df --output=avail $parent_dir | sed 1d`" -lt $MIN_SIZE ] + then + supprimer_anciennes_sauvegardes + test_and_fail $? "Plus d'espace sur le disque et pas d'ancienne sauvegarde a supprimer" + $@ + ret=$? + else + test_and_fail 1 "l'action '$@' a planté innopinement" + fi +} + usage(){ echo "Utilisation $0 [options] device" echo "Device doit etre un disque non monté" @@ -155,6 +170,7 @@ mysql=false postgres=false encfs=false archive=false +MIN_SIZE=$((1024*1024)) # Transform long options to short ones for arg in "$@"; do @@ -228,7 +244,7 @@ dev=$1 do_log "démarrage le `date`" -[ ! -d $dest ] && mkdir $dest +[ ! -d "$dest" ] && mkdir "$dest" /bin/mount -t auto $dev $dest test_and_fail $? "Impossible de monter le disque destination, abandon" @@ -252,8 +268,9 @@ then fi parent_dir=$dest -dest=$parent_dir/$date$postfix -mkdir $dest +dest="$parent_dir/$date$postfix" +mkdir "$dest" +[ ! -d "$dest" ] && liberer_espace mkdir "$dest" for action in $ACTIONS do @@ -261,15 +278,8 @@ do ret=$? while [ $ret -ne 0 ] do - if [ "`df --output=avail $parent_dir | sed 1d`" -lt $((1024*1024)) ] - then - supprimer_anciennes_sauvegardes - test_and_fail $? "Plus d'espace sur le disque et pas d'ancienne sauvegarde a supprimer" - $action - ret=$? - else - test_and_fail 1 "l'action '$action' a planté innopinement" - fi + liberer_espace $action + ret=$? done nom=${action/_/ } do_log "$nom reussie"