Au secours ma carte SD est pleine à craquer
Quelques commandes Linux très utiles à connaître quand on se retrouve avec des erreurs d’écriture à cause d’une carte SD pleine à craquer. Ça m’est arrivé suite à une erreur sur mon NAS qui eu lieu d’écrire sur le disque dur s’est mis à écrire directement sur la SD: j’ai bien galéré pour comprendre pourquoi ma carte SD était soudainement pleine à craquer, et voici un récap des commandes qui m’ont été très utiles pour faire le nettoyage.
Commande “df” (disk free)
Cette commande va éditer tous les points de montage et afficher leur taille et le % résiduel disponible: c’est la première étape pour identifier le point de montage “trop plein” qui nécessite un nettoyage.
df -h
Par exemple dans mon cas je peux voir que le point de montage / (système /dev/root) est un disque de 110G (120G “commerciaux”) utilisé à 8%, et j’ai aussi un disque dur monté sur /dev/sdb1 de 500Go (commerciaux … 458Go mesuré) utilisé à 65% sur le point de montage /media/pi/OlivDD
Sur mon raspiNAS je m’étais retrouvé avec le point de montage / utilisé à 99% !
Commande “du” (disk usage)
Lorsque le point de montage trop plein a été identifié, on va utiliser la commande du (disk usage) pour afficher récursivement la taille des répertoires: la taille affichée correspond bien à la taille de tous les fichiers et sous-répertoires contenus dans chaque répertoire: cela permet d’identifier où est le problème.
sudo du -sch /*
Cette commande va afficher en Ko, Mo ou Go la taille de tous les répertoires à la racine /
Il faut utiliser sudo pour avoir les droits admin, certains fichiers ne sont pas accessibles sinon. Il y a quelques erreurs de lecture dans /proc/xxxx qui ne sont pas grave et n’empêchent pas de poursuivre l’opération qui peut prendre du temps, il faut patienter jusqu’à ce que le total apparaisse.
Ici je peux voir que j’ai 2.4Go de données dans /home, 4.3Go dans /usr et 279Go de données dans /media ce qui ne me surprend pas car c’est mon disque dur de 500Go monté sur /media/pi/OlivDD
Vous pouvez ainsi identifier quel est le répertoire où il faut faire du ménage, et recommencer l’opération plus finement en ciblant un autre répertoire, comme par exemple:
sudo du -sch /home/pi/*
Sur mon NAS je m’étais retrouvé avec tout un répertoire de mon disque dur de 500Go recopié dans /home/pi sur ma petite carte SD de 16Go, autant dire que ça était très vite rempli…
Commande “rm” (remove)
Maintenant qu’on a identifié le répertoire qui pose problème, il est temps de passer au nettoyage en utilisant la commande “rm” qui permet d’effacer des fichiers ou des répertoires et tout leur contenu d’un seul coup: à manipuler avec délicatesse on peut rapidement faire de grosses bêtises irréversibles …
Tout d’abord on se place dans le bon répertoire avec la commande cd, et on peut utiliser la commande ls pour lister les fichiers présents
Par exemple si je veux supprimer tous les fichiers dans /home/pi/Downloads
cd /home/pi/Downloads
ls -l
Si je veux tout supprimer d’un coup:
rm *
Si vous souhaitez supprimer un répertoire complet avec tout ce qu’il contient de manière récursive: il faut exécuter la commande:
rm -rf MonRepertoireASupprimer/
Attention ça ne pardonne pas: il ne restera plus rien dans le répertoire où vous exécutez cette simple commande.
J’ai utilisé cette commande pour supprimer d’un coup le répertoire avec tous les fichiers et les tonnes de sous-répertoires qui ont été créés directement sur ma carte SD par erreur, et mon NAS a pu reprendre vie !
Pour aller plus loin avec les commandes Linux, je recommande ce Github.