# Comment obtenir la taille d'un répertoire sous Linux {{METATOC 4-5}} #### La commande df Cette commande veut dire système de fichiers disque (disk filesystem en anglais). Elle affichera l’espace disque disponible et utilisé des systèmes de fichiers. Cette commande, affiche certaines colonnes par défaut telles que Sys. de fichiers, Taille, Utilisé, Dispo, Uti% et Monté sur.\\ \\ - Sys. de fichiers – Fournit le nom du système de fichiers.\\ - Taille : vous donne la taille totale du système de fichiers.\\ - Utilisé : Indique la quantité d’espace disque déjà utilisé dans le système de fichiers.\\ - Disponible : Indique la quantité d’espace disponible dans le système de fichiers.\\ - Uti% : Indique la quantité d’espace disque déjà utilisé en pourcentage.\\ - Monté sur : Indique le point de montage de ce système de fichiers. Voici quelques-unes des options les plus utiles de cette commande: ^ Option ^ Description ^ | df -h | La sortie sera affichée dans un format plus humain/lisible. En utilisant cette commande, l’espace disque sera affiché en Go (s’il est inférieur à 1 Go, il sera affiché en Mo ou même en o). - | df -m | Est utilisée pour afficher des informations sur l’utilisation du système de fichiers en Mo. | | df -k | Est utilisée pour afficher des informations sur l’utilisation du système de fichiers en Ko . | | df -T | Cette option affiche le type de système de fichiers (une nouvelle colonne apparaît). | | df -ht /home | Cette option permet d’afficher des informations sur un système de fichiers spécifique (en format lisible). | |df –help | Affiche toutes les autres commandes utiles que l'on peut utiliser et fournit plus d’informations à leur sujet. | #### Commande du Lors de la liste du contenu d'un répertoire à l'aide de la commande ls, on peut remarqué que la taille des répertoires est presque toujours de 4096 octets (4 Ko). C'est la taille de l'espace sur le disque qui est utilisé pour stocker les méta-informations du répertoire, pas ce qu'il contient. La commande que l'on doit utiliser pour obtenir la taille réelle d'un répertoire est **du**, qui est l'abréviation de « l'utilisation du disque ». La commande du affiche la quantité d'espace fichier utilisée par les fichiers ou répertoires spécifiés. Si le chemin spécifié est un répertoire, **du** résume l'utilisation du disque de chaque sous-répertoire de ce répertoire. Si aucun chemin n'est spécifié, **du** rapporte l'utilisation du disque du répertoire de travail actuel . Voici quelques-unes des options les plus utiles de cette commande: ^ Option ^ Description ^ | du /home/user/Desktop/ | Cette option permet de voir dans le bureau de l’utilisateur et elle fournira récursivement des informations concernant l’utilisation du disque des dossiers et des fichiers qui sont sur notre Bureau (ce qui signifie que tous les sous-dossiers sont également inclus). | | du -h /home/user/Desktop/ | Tout comme avec df , l’option -h affiche les informations dans un format plus lisible par l’Homme . | | du -sh /home/user/Desktop/ | L’option -s donnera la taille totale d’un dossier spécifié (dans ce cas, il montrera la taille totale du dossier Desktop). | | du -m /home/user/Desktop/ | Tout comme avec df , cela fournira des informations en Mégaoctets (on peut utiliser -k pour voir les informations en Kilooctets) . | | du -h –time /home/user/Desktop/ | Cela donnera des informations basées sur la dernière date de modification des fichiers et dossiers affichés. | | du --help | Affiche toutes les autres commandes utiles que l'on peut utiliser et fournit plus d’informations à leur sujet. | Lorsqu'elle est invoquée sans aucune option, **du** affiche l'utilisation du disque du répertoire donné et chacun de ses sous-répertoires en octets. En règle générale, on souhaite afficher l'espace occupé par le répertoire dans un format lisible par l'homme. Par exemple, pour obtenir la taille totale du répertoire /var, il faut exécuter la commande suivante : ``` sudo du -sh /var ``` La sortie ressemblera à ceci : ``` 85G /var ``` * **s** - Affiche uniquement la taille totale du répertoire spécifié, n'affiche pas les totaux de taille de fichier pour les sous-répertoires. * **h** - Tailles d'impression dans un format lisible par l'homme (h). * **/var** - Le chemin d'accès au répertoire dont on souhaite obtenir la taille. Pour afficher l'utilisation du disque des sous-répertoires de premier niveau, il y a deux options. La première consiste à utiliser le symbole astérisque (*) comme indiqué ci-dessous, ce qui signifie "faire correspondre tout ce qui ne commence pas par un point (.)". L'option -c indique à du d'imprimer un total général de toutes les tailles : ``` sudo du -shc /var/* 24K /var/db 4.0K /var/vide 4.0K /var/jeux 77G /var/lib 4.0K /var/local 0 /var/verrou 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/exécution 196K /var/bobine 28K /var/tmp 85G au total ``` Une autre façon d'obtenir un rapport sur l'utilisation du disque des sous-répertoires de premier niveau consiste à utiliser l'option **--max-depth**: ``` sudo du -h --max-depth=1 /var 77G /var/lib 24K /var/db 4.0K /var/vide 4.0K /var/local 4.0K /var/opt 196K /var/bobine 4.0K /var/jeux 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G au total ``` Par défaut, la commande du affiche l'espace disque utilisé par le répertoire ou le fichier. Pour trouver la taille apparente d'un répertoire, utilisez l'option **--apparent-size**. La « taille apparente » d'un fichier est la quantité de données qu'il contient réellement. ``` sudo du -sh --apparent-size /var ``` Lorsqu'on transfert un répertoire via SCP , Rsync . ou SFTP, la quantité de données transférées sur le réseau correspond à la taille apparente des fichiers. C'est pourquoi la taille de l'espace sur le disque utilisé sur la source lorsqu'elle est affichée avec **du** (sans --apparent-size) n'est pas la même que la taille sur la cible. La commande du peut également être combinée avec d'autres commandes avec des pipes. Par exemple, pour imprimer les 5 plus grands répertoires dans le répertoire /var, diriger la sortie de **du** vers la commande sort pour trier les répertoires par leur taille, puis diriger la sortie vers la commande head qui n'imprimera que les 5 premiers répertoires : ``` sudo du -h /var/ | sort -rh | head -5 85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G/var/cache/pacman/pqt ``` Voici une combinaison utile pour filtrer les gros fichiers (fichiers qui font au moins un Gigaoctet d’espace). On paut également utiliser +M au lieu de +G pour lister les fichiers qui font au moins un Mégaoctet. ``` du -h /home/user/jacques.nougat/ | grep -E '^(\s*[0-9]+)G' | sort -n -r >du.txt ```