Automatisation backup
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.
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
-
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