Contrôler et trouver les dossiers les plus volumineux sur votre Mac avec le terminal
Suite à la demande d’un visiteur dans les commentaires attachés à l’article sur l’activation du trim sur macOS, voici un petit article permettant de contrôler et de trouver les dossiers qui utilisent le plus d’espace de votre disque dur.
Il existe des dizaines de solutions pour réaliser cette action. La solution la plus simple, et certainement la plus commune, est d’utiliser Finder pour vérifier la taille des dossiers les uns après les autres. Malheureusement, Finder n’est vraiment pas le plus performant pour cela, et l’on finit submergé par les nombreuses fenêtres d’informations ouvertes.
Pour ma part, je préfère utiliser le terminal, et les commandes df et du. Comme d’habitude, l’une des raisons principales est qu’il est possible de réaliser cette tâche à distance. Cela permet de limiter le nombre de fenêtres, et éventuellement de faire autre chose pendant que les tailles de dossiers sont calculées.
Commençons par la commande df
La commande df est la plus simple, mais la moins utile des deux. Elle permet, tout simplement de connaitre l’espace disque (Disk free) disponible sur les disques durs montés sur la machine.
Pour obtenir un résultat « humainement » lisible, nous ajoutons le paramètre -h, et en avant.
df -h
Le résultat est immédiat.
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 112Gi 101Gi 10Gi 91% 26640332 2682930 91% /
devfs 189Ki 189Ki 0Bi 100% 654 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
localhost:/jPws6TuBfGfyQHE53kgiTo 112Gi 112Gi 0Bi 100% 0 0 100% /Volumes/MobileBackups
/dev/disk2s2 8.8Gi 4.4Gi 4.4Gi 51% 1159940 1144640 50% /Volumes/InstallESD
/dev/disk3s2 224Gi 133Gi 91Gi 60% 34865905 23727843 60% /Volumes/Backup
/dev/disk3s3 242Gi 57Gi 185Gi 24% 15014815 48371333 24% /Volumes/Media
Il s’agit d’un tableau listant quelques éléments, associés à leurs tailles : totale, utilisée, libre, la capacité (en pourcentage), et le nom du point de montage.
Il peut parfois y avoir des éléments en plus, pour les éviter, vous pouvez utiliser la modification suivante pour afficher uniquement les disques
df -h | grep "/dev/disks*"
Le résultat est ainsi plus facile à lire.
/dev/disk1 112Gi 101Gi 10Gi 91% 26642600 2680662 91% /
/dev/disk2s2 8.8Gi 4.4Gi 4.4Gi 51% 1159940 1144640 50% /Volumes/InstallESD
/dev/disk3s2 224Gi 133Gi 91Gi 60% 34854960 23738788 59% /Volumes/Backup
/dev/disk3s3 242Gi 57Gi 185Gi 24% 15014815 48371333 24% /Volumes/Media
Malheureusement, ll n’y a plus l’en-tête du tableau indiquant à quoi correspond chaque colonne, cependant, cela reste facilement devinable.
Il est possible d’obtenir un résultat équivalent, avec la commande
diskutil list
que nous avons pu voir à plusieurs reprises, dans différents articles.
Continuons avec la commande ls
Il s'agit d'une commande très classique, mais la commande ls va nous permettre de récupérer la liste des dossiers à la racine du disque que vous souhaitez vérifier.
Nous lui ajouterons divers paramètres dont le -l qui permet d'obtenir le listing "long".
Intéressons nous au disque principal, si vous regardez la liste des dossiers avec Finder, vous verrez 4 dossiers
Applications
Bibliothèque
Système
Utilisateurs
Malheureusement, Finder est un petit menteur, et occulte volontairement les dossiers Linux/UNIX qui se trouvent à la racine du disque, et qui peuvent contenir pas mal de données.
Avec votre terminal, placez vous à la racine du site
cd /
puis récupérez la liste des dossiers présents, avec la commande
ls -l
Vous pouvez même aller plus loin, en lui demandant d'afficher tous les dossiers, y compris ceux qui sont invisibles
ls -la
Le résultat, sur mon Mac est
drwxr-xr-x 28 root wheel 896 26 nov 14:49 .
drwxr-xr-x 28 root wheel 896 26 nov 14:49 ..
-rw-rw-r-- 1 root admin 6148 26 nov 14:49 .DS_Store
d--x--x--x 9 root wheel 288 20 nov 07:42 .DocumentRevisions-V100
drwxr-xr-x@ 2 root wheel 64 6 nov 20:54 .PKInstallSandboxManager-SystemSoftware
drwx------ 5 root wheel 160 3 nov 10:15 .Spotlight-V100
d-wx-wx-wt 2 root wheel 64 3 nov 12:19 .Trashes
---------- 1 root admin 0 26 fév 2019 .file
drwx------ 296 root admin 9472 26 nov 13:21 .fseventsd
drwxr-xr-x 2 root wheel 64 3 nov 15:29 .vol
drwxrwxr-x+ 105 root admin 3360 22 nov 19:05 Applications
drwxr-xr-x+ 66 root wheel 2112 3 nov 15:35 Library
drwxr-xr-x 2 root wheel 64 26 fév 2019 Network
drwxr-xr-x@ 5 root wheel 160 21 sep 03:36 System
drwxr-xr-x 7 root admin 224 3 nov 15:29 Users
drwxr-xr-x+ 9 root wheel 288 26 nov 14:49 Volumes
drwxr-xr-x@ 37 root wheel 1184 21 sep 03:40 bin
drwxrwxr-t 2 root admin 64 3 nov 15:29 cores
dr-xr-xr-x 3 root wheel 5002 20 nov 07:42 dev
lrwxr-xr-x@ 1 root wheel 11 3 nov 15:28 etc -> private/etc
dr-xr-xr-x 2 root wheel 1 26 nov 13:00 home
-rw-r--r-- 1 root wheel 313 31 mai 03:28 installer.failurerequests
dr-xr-xr-x 2 root wheel 1 26 nov 13:00 net
drwxr-xr-x 6 root wheel 192 3 nov 15:29 private
drwxr-xr-x@ 64 root wheel 2048 3 nov 15:28 sbin
lrwxr-xr-x@ 1 root wheel 11 3 nov 15:28 tmp -> private/tmp
drwxr-xr-x@ 9 root wheel 288 21 sep 03:32 usr
lrwxr-xr-x@ 1 root wheel 11 3 nov 15:28 var -> private/var
et cela devrait être sensiblement identique sur le votre.
Rapidement, comment lire cette liste ? La première colonne indique le type puis les droits associés au dossier ou au fichier. Dans cette colonne, la premiere lettre indique le type :
- d : un dossier
- l : un lien
- - : un fichier
Il existe d'autres types, mais il y a peut de chance d'en rencontrer dans lors de notre progression dans l'article.
Il y a ensuite les droits, par 3 blocs de 3 lettres. Les 3 blocs représentent dans l'ordre :
- le propriétaire
- le groupe
- les autres
Ce sont, finalement, les mêmes informations que l'on retrouve dans la boite "Lire les informations" de Finder.
Les 3 lettres indiquent :
- r : Lecture autorisée
- w : Ecriture autorisée
- x : Exécution autorisée
Si les lettres sont remplacées par un - , c'est que le propriétaire, le groupe ou les autres ne possèdent pas ce droit.
La colonne suivante, est un numérique, indiquant le nombre de dossiers ou de liens présents à l'intérieur du dossier. Vous verrez que pour les fichiers, ou les liens, la valeur est toujours à 1, puisqu'il s'agit de l'élément lui-même.
Ensuite viennent le propriétaire, puis le groupe. A la racine, tous les dossiers et fichiers appartiennent à root, le super administrateur des systèmes Linux/UNIX dont macOS fait parti. Cependant, sur macOS, Apple fait tout pour le cacher, afin de conserver son côté "grand public". Il faut néanmoins savoir que vous pouvez y accéder.
Ainsi lorsque macOS vous demande votre mot de passe administrateur pour faire des modifications sur le Système ou la Bibliothèque, vous permettez en fait au logiciel en question d'accéder au dossier via un accès root.
De la même manière, lorsque vous taper la commande sudo, avant tout autre commande, cette dernière sera exécutée avec le compte root. Cela peut expliquer que vous copiez parfois un dossier avec sudo, sans en avoir les droits ensuite.
Vient ensuite la taille, qui, pour les dossiers n'est pas très intéressante, car elle n'indique pas la taille des éléments inclus. Cependant, elle peut être utile pour les fichiers. La taille donnée est en octets, pour les dossiers disposant de gros fichiers, il est conseillé d'ajouter le paramètre -h à la commande pour que les tailles soit affichées automatiquement en Ko, Mo, Go, ....
Par exemple
ls -lh
ou encore
ls -lah
Ensuite, c'est la date de dernière modification qui est indiquée. Si la date est récente, en particulier dans la même année, l'heure est affichée, sinon, nous avons le droit à l'année.
Enfin, le dernier, le nom du fichier, et pour les liens, la cible du lien.
La commande ls et quelques un de ses paramètres n'ont désormais plus de secrets pour vous.
Rentrons dans le vif du sujet avec la commande du
La commande du, pour Disk Usage, permet d'obtenir la taille des éléments présents dans un dossier.
Par défaut, elle va lister, et donner la taille de tous les éléments dans le dossier courant. Attention, si vous êtes toujours à la racine du disque, la lancer, peut prendre un certain moment, et le nombre de ligne généré deviendra rapidement illisible.
Donc, le plus important, pour commencer, est de savoir comment l'arrêter. Pour cela il suffit d'appuyer sur les 2 touches ctrl + C.
De plus, il faut savoir que la commande du ne peut accéder qu'aux éléments auxquels vous avez le droits. Et macOS, notamment dans les dossiers Système et Bibliothèque, contient de nombreux éléments auquel vous n'avez pas le droit. Cependant, il faut savoir que bien souvent, voir tout le temps, il s'agit de fichiers ou dossiers qui ne sont pas nécessairement lourds, mais surtout obligatoires pour le bon fonctionnement du système. Il n'est donc, en aucun cas, question de les supprimer.
Pour obtenir la somme de la taille des fichiers d'un dossier, sans forcément avoir le détails de tous les fichiers, il faut utiliser le paramètre -s.
Et puis comme, comme sur tout ordinateur moderne, on ne regarde plus les octets mais directement, les Mo, Go ou encore To, on va lui joindre le paramètre -h, qui réagit de la même manière qu'avec les commandes df et ls, à savoir donner une taille humainement lisible.
Par exemple, pour obtenir le poids total du dossier Applications qui se trouve à la racine, puisque nous y sommes toujours
du -hs Applications
Selon la taille du dossier, et surtout le nombre de fichiers qu'il contient, cela peut prendre du temps, notamment sur un disque dur classique. Avec un SSD, le résultat sera bien plus réactif.
30 secondes après avoir lancé la commande j'obtiens le résultat :
112G Applications
Une taille plutôt conséquente pour un dossier Applications.
Il est possible d'obtenir la taille de tous les sous éléments de votre dossier courant
du -hs *
Attention, je vous déconseille de le faire sur le dossier racine, car cela ira chercher la taille de tous les dossiers présents sur le disque, mais aussi les disques durs ou réseaux attachés. En effet, les volumes externes sont liés dans le dossier /Volumes présent à la racine votre disque dur principal.
A la racine du disque, il est préférable d'utiliser la commande avec précaution, car, avec le nombre de fichiers présents sur le disque cela peut vite prendre de grandes proportions.
Vous pouvez cependant demander la taille de plusieurs dossiers, en les listant après la commande.
Par exemple, pour avoir la taille des dossiers Applications et Bibliothèque
du -hs Applications Library
Le résultat est
112G Applications
du: Library/Application Support/Apple/ParentalControls/Users: Permission denied
du: Library/Application Support/Apple/AssetCache/Data: Permission denied
du: Library/Application Support/ApplePushService: Permission denied
du: Library/Application Support/com.apple.TCC: Operation not permitted
du: Library/SystemMigration/History/Migration-78687D49-DA8B-4666-B800-EDE2A10C42C9/QuarantineRoot/private/var/db/datadetectors: Permission denied
du: Library/Caches/Desktop Pictures/D9547101-AC4B-4A55-B12F-D5C7BD777EEB: Permission denied
du: Library/Caches/com.apple.iconservices.store: Permission denied
3,9G Library
Comme vous pouvez le voir, je n'ai pas accès à certains fichiers, mais en passant par la commande sudo, et donc le super-utilisateur, je peux avoir accès à la taille globale, sans les erreurs
sudo du -hs Applications Library
Le terminal vous demandera votre mot de passe pour confirmer que vous êtes bien un administrateur du Mac.
112G Applications
du: Library/Application Support/com.apple.TCC: Operation not permitted
4,1G Library
Il reste un dossier que la commande n'arrive pas à accéder, cela est certainement du aux nombreuses protections ajoutées par Apple, pour éviter qu'un utilisateur mal-intentionné ne puisse modifier le système.
Cependant, nous pouvons voir que d'autres dossiers sont désormais inclut dans le calcul du poids, qui, pour le coup, a changé, en prenant 200 Mo supplémentaires.
Il est aussi possible d'utiliser le caractère wildcard "*" pour obtenir la taille de plusieurs dossiers dont le nom se ressemble. Par exemple pour obtenir la taille de tous les fichiers et dossiers invisibles présents à la racine (puisque nous n'avons toujours pas bougé), je demande la taille de tous les éléments qui commencent par un .
sudo du -hs .*
Le résultat est
8,0K .DS_Store
95M .DocumentRevisions-V100
0B .PKInstallSandboxManager-SystemSoftware
du: .Spotlight-V100: Operation not permitted
0B .Trashes
0B .file
21M .fseventsd
0B .vol
Il y a encore une fois, il y a un dossier inaccessible. Mais il est tout de même possible d'obtenir la taille des autres éléments, qui sont vides ou peu volumineux.
Pour les plus fainéants, comme moi, il est possible d'ajouter le paramètre -c, qui ajoute la somme des éléments trouvés.
sudo du -chs .*
Une ligne est ajoutée à la fin, indiquant le grand total.
8,0K .DS_Store
95M .DocumentRevisions-V100
0B .PKInstallSandboxManager-SystemSoftware
du: .Spotlight-V100: Operation not permitted
0B .Trashes
0B .file
21M .fseventsd
0B .vol
116M total
Maintenant que vous connaissez les bases de la commande du, revenons sur une information donnée en début de chapitre. Je vous déconseillais de lancer la commande brute sur l'ensemble de votre disque, en particulier, à cause des disques durs et réseaux présents dans le dossier Volume.
Il est tout de même possible de lancer la commande en ajoutant le paramètre -x. Cette option permet de ne pas inclure les points de montage. Donc, si vous n'êtes pas pressé, vous pouvez tenter la commande
sudo du -cxhs *
Guide de bonne conduite lors du nettoyage de son disque.
Maintenant que nous savons comment connaitre la taille de nos dossiers, il suffit d'avancer et de visiter l'ensemble de son disque pour vérifier tous les dossiers qui nous paraissent trop gros.
Avant de supprimer sauvagement des dossiers, il faut s'imposer des règles simples.
Il est évident qu'il ne faut jamais supprimer un dossier dont vous vous servez. Le but est de gagner de la place, pas de vider vos dossiers de travail !
Moins évident, mais tout aussi important, il ne faut jamais supprimer un dossier dont on ne connait pas le but, même s'il s'agit d'un dossier se trouvant dans votre compte.
Ne pas perdre de temps à progresser dans les sous-dossiers d'un dossier qui n'est pas si volumineux que cela. Au pire, vous y reviendrez plus tard.
De la même manière si un dossier vous parait être à une grande taille, mais une taille logique, ne perdez pas de temps avec.
Le principe est ensuite simple, il faut parcourir le disque avec les commandes cd, ls et du, pour identifier les dossiers qui prennent le plus de place. Vérifier leurs contenus, supprimer les éléments dont vous n'avez plus besoin, ou déplacer ceux qui pourraient être stockés ailleurs.
Quelques astuces pour économiser son disque dur.
Malgré ce que pense Apple, il est nécessaire de savoir qu'un disque dur dispose d'une certaine durée de vie. Qu'il s'agisse d'un disque à plateaux ou d'un SSD, il faut savoir que votre disque dur finira par mourrir un jour. Le disque dur est un consommable, qu'il est parfois nécessaire de remplacer.
Par exemple, dans le Mac Pro que j'utilise, le disque principal a été changé 2 fois, sur une période de 10 ans. Chaque disque aura donc tenu un peu moins de 3,5 ans. Alors certes, j'ai une utilisation "lourde", voir "très lourde" de mon Mac, mais il n'empêche que si le disque avait été soudé dans le Mac Pro, j'aurai été fort embêté.
Car, malheureusement, Apple, dans ses dernières machines, soude le disque dur dans le Mac. Cela est d'une hérésie sans nom, mais nous n'avons pas le choix, si l'on veut continuer à utiliser macOS, dans un Mac.
Il est donc nécessaire, d'une part, de faire des sauvegardes régulières de son disque dur, et pour cela, Apple fournit l'un des plus chouettes outils du marché avec TimeMachine. D'autre part, il est nécessaire d'économiser l'utilisation de son disque au strict minimum, d'autant plus lorsqu'il est soudé.
A noter que c'est l'écriture, bien plus que la lecture, qui est source du vieillissement des disques. Smartmontools est un outils dont je vous ai déjà parlé, et qui permet de contrôler l'état de ses disques.
D'un ordre général, je suggère toujours de déplacer les éléments volumineux et qui ne nécessitent pas un accès rapide depuis votre disque dur principal vers un disque dur externe. Cela vaut pour les jeux, il est très facile de mettre les jeux Steam sur un disque externe, soit en déplaçant sa bibliothèque depuis l'application, soit, si cela ne marche pas, en déplaçant manuellement ses jeux, puis en mettant un lien symbolique permettant de faire la passerelle.
L'Epic Game Launcher permet de faire la même chose, mais si le nombre de jeux disponibles pour Mac est moins conséquent. Battle.net, permet aussi de localiser ses jeux, et donc de les placer ailleurs que sur le disque principal. Il faut savoir que les jeux sont parmi les éléments les plus volumineux que l'on peut trouver sur un ordinateur.
Vous pouvez faire de même avec vos médias de type films ou séries. Cela va prendre beaucoup de place, et il n'y a strictement aucune nécessité à les avoir sur le disque principal. De même pour les ROMs, pour les amateurs de retro-gaming.
Enfin, les programmes d'installation de macOS peuvent, eux aussi être déplacé sur un disque secondaire. Ce sont 4 à 6Go d'économisés à chaque fois.
Pour ma part, j'ai été encore plus loin, en déplaçant l'un des dossiers qui bougent le plus lors de l'utilisation de son Mac, le dossier Téléchargement, vers un autre disque. Les éléments présents sont ensuite rangés proprement lorsque c'est nécessaire.
Evidemment, il est ensuite nécessaire de se poser de la question la plus importante : Ai-je besoin de sauvegarder les données présentes sur ce disque ? Et oui, il est évident que ce disque peut lui aussi tomber en panne.
Les jeux peuvent être re-téléchargés, la plupart du temps. Il faut par contre, s'assurer que les parties sont bien sauvegardées, soit en ligne avec le cloud, soit manuellement.
Pour les films, comme pour les ROMs, c'est à vous de voir. Mais il est sûr les films persos doivent disposer d'une sauvegarde au risque de les perdre.
Pour un bon fonctionnement de son Mac, il est nécessaire de toujours avoir environ 20Go d'espace disque disponible. Ainsi macOS peut créer sa mémoire virtuelle sans problème, et il reste de la place pour le cache des différentes applications.