Libérer de la place sur votre SSD en tant que développeur
Guillaume Briday
3 minutes
Si vous êtes développeur et que vous avez un Mac, il est très probable que vous ayez déjà eu un manque de place sur votre SSD. Et pour cause, les outils modernes tels que Docker, Node ou Brew sont très gourmands lorsqu'il s'agit de prendre de l'espace. On va voir quelques commandes rapides pour faire (beaucoup) d'espace en toute sécurité.
Avant de commencer, placez-vous dans votre dossier qui contient tous vos projets.
On va voir outils après outils comment libérer de l'espace, c'est parti !
Node modules
Cette commande permet de faire le cumul du poids de tous vos dossier node_modules
et de vérifier ce que l'on va supprimer :
$ find $(pwd) -name "node_modules" -type d -prune -print | xargs du -chs
Par définition, ce ne sont que des dépendances et peuvent être réinstallées à tout moment. On peut donc les supprimer, si on en a plus besoin, avec cette commande :
$ find $(pwd) -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
Au passage, si vous utilisez Time Machine, vous pouvez exclure tous les dossiers node_modules
avec cette commande :
$ find $(pwd) -type d -name 'node_modules' -prune | xargs -n 1 tmutil addexclusion
Bien sûr, il ne faut pas supprimer les node_modules
avant de lancer cette commande.
Vous pouvez également vider le cache de npm
ou yarn
:
$ npm cache clean
# ou
$ yarn cache clean
Docker
Entre les containers, les volumes, les images et les réseaux, Docker a tendance à prendre beaucoup de place si vous vous en servez régulièrement.
Cette commande permet de supprimer tous les containers stoppés, les images et les réseaux qui ne sont pas utilisés :
$ docker system prune -a
Les containers
Attention, vous pouvez perdre des données si vous n'avez pas configuré de volume correctement.
# Lister vos containers
$ docker ps -a
# Supprimer vos containers
$ docker rm votre_container votre_autre_container
Pour lister et supprimer tous vos containers qui sont coupés:
# Lister vos containers avec le statut exited
$ docker ps -a -f status=exited
# Supprimer tous les containers avec le statut exited
$ docker rm $(docker ps -a -f status=exited -q)
Pour arrêter et supprimer tous vos containers:
$ docker stop $(docker ps -a -q)
$ docker rm $(docker ps -a -q)
Les images
Comme pour les node_modules
, toutes les images peuvent être téléchargées quand vous voulez, mais vous pouvez aussi les supprimer une par une si besoin :
# Lister vos images
$ docker image ls
# Supprimer vos images
$ docker rmi votre_image votre_autre_image
Pour supprimer vos images sans tag :
$ docker image prune
Pour supprimer toutes vos images :
$ docker rmi $(docker images -a -q)
Les volumes
Vous n'avez peut être pas envie de supprimer vos volumes, car ils contiennent vos données et même en développement on n'a pas forcement de tout perdre. Faites donc attention à ne pas supprimer n'importe quoi ici.
# Lister vos volumes
$ docker volume ls
# Supprimer vos volumes
$ docker volume rm votre_volume votre_autre_volume
Supprimer vos volumes qui ne sont pas utilisés par au moins un container :
$ docker volume prune
Les logs
Les logs, même de développement, peuvent prendre plusieurs Go de place après une certaine période. On en a rarement besoin très longtemps et on peut facilement les supprimer sans prendre de risque.
Pour vérifier ce que l'on va supprimer et voir le poids cumulé :
$ find $(pwd) -name "*.log" -print | xargs du -chs
Pour les supprimer:
$ find $(pwd) -name "*.log" -print -exec rm '{}' \;
N'hésitez pas à adapter la commande si vous avez des dossiers de cache.
Vagrant
On peut rapidement se retrouver avec plusieurs images de plusieurs Go.
# Pour lister vos boxes:
$ vagrant box list
# Pour supprimer vos boxes inutiles
$ vagrant box remove votre_box
Brew
Si vous utilisez brew, vous pouvez supprimer les anciennes formules :
$ brew cleanup
Ruby
Les versions de Ruby et les gems correspondantes peuvent prendre beaucoup de place, surtout si vous travaillez souvent sur des projets avec plusieurs versions.
Avec rvm, on peut lister les versions installées :
$ rvm list
En supprimant une version, cela supprimera également les gems correspondantes :
$ rvm remove 2.4.3 # ou une autre version
Pour supprimer vos gems uniquement :
# Pour supprimer les anciennes versions de vos gems obsolètes
$ bundle clean
# Pour supprimer toutes les gems d'un gemset
$ rvm gemset empty
PHP
Pour supprimer le cache de composer, rien de plus simple :
$ composer clearcache
Vous pouvez aussi supprimer les dossiers vendors
avec en adaptant la commande des node_modules
. Cela est sans risque car les dépendances PHP peuvent être télécharger à tout moment.
Conclusion
Ces quelques commandes pourront vous faire gagner plusieurs dizaines de Go d'espace, ce qui peut être très pratique, surtout avec des SSD de 128Go.