Automatisation backup

GadretGwenael Messages postés 2 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis sur raspberry et j'aimerais qu'à chaque fois que ma clé USB n'a que 1 Go d'espace libre, ça supprime le dossier le plus ancien.

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Il faut préciser à quel moment se fait la vérification.
    • Manuellement, en exécutant un script ?
    • Quand on branche la clé USB (par exemple avec une règle
      udev
      ) ?
    • Périodiquement (par exemple à l'aide d'un
      cron
      ) ?


    Ensuite les commandes intéressantes sont :
    • df -h
      pour voir l'espace disponible ;
    • rm -rf /le/dossier/a/supprimer
      pour supprimer un dossier ;
    • ls -lt /le/dossier/a/examiner
      pour trier par date.


    Ci-dessous, je te donne certains passages du script que tu pourrais écrire. Admettons que ta clé soit montée dans
    /media/usb
    , alors pour contrôler sa taille :

    size=$(df -h 2>/dev/null | grep /media/usb | awk '{print $4}')


    Cette taille peut être exprimée en méga octets (M) ou en giga octets (G). Si tu as plus de 1Go, alors elle sera exprimée en giga octets, sinon en méga octets. ll suffit donc vérifier si
    $size
    se termine par un G.

    if $(echo $size | grep -q ".*G")
    then
        echo "il y a plus de 1Go: $size"
    else
        echo "il y a moins de 1Go: $size"
    fi


    Il faut ensuite spécifier où se situe le dossier le plus ancien à supprimer. Est-il forcément à la racine de ta clé ? Que doit- faire ton script si a la fin, la taille reste supérieure à 1Go ?

    Supposons que ce soit un fichier dans
    /media/usb
    . Le plus vieux dossier (s'il existe) situé à la racine de la clé USB se récupère avec la commande :

    oldest=$(ls -lt /media/usb | grep "^d" | tail -n 1 | awk '{print $9}')


    Il faut alors vérifier si cette variable est non vide (donc, si le dossier existe) et le supprimer

    if [ -z "$oldest" ]
    then
      echo "\$oldest est vide !"
    else
      echo "\$oldest vaut $oldest"
      # Ne décommente ce qui suit qu'une fois que tu es sûr(e) de ton script
      #rm -rf $oldest
    fi


    Bonne chance
    0