Automatisation backup

GadretGwenael Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 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.
A voir également:

1 réponse

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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