Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

Tag - répertoires

Fil des billets - Fil des commentaires

vendredi 13 janvier 2017

Trier les fichiers et répertoires sous Linux par taille

Quand on doit archiver le contenu d'un répertoire ou qu'on manque de place sur un système de fichiers, la question de savoir quels fichiers ou répertoires occupent le plus d'espace se pose nécessairement.

On voit beaucoup de commandes sur Internet pour trier les fichiers et répertoires sous Linux, à base de find, ls, plus ou moins compliquées, alors que Linux fournit nativement une commande simple pour cet usage, la commande du, qui signifie "disk usage".

Par défaut, la commande du affiche la place utilisée dans chaque répertoire dans /var/log:

du /var/log
1140    /var/log/cups
32      /var/log/mysql
12      /var/log/fsck
48      /var/log/exim4
8       /var/log/dbconfig-common
104     /var/log/apt
4       /var/log/firebird
36      /var/log/lightdm
32      /var/log/tor
4       /var/log/speech-dispatcher
88      /var/log/apache2
14516   /var/log/installer/cdebconf
16724   /var/log/installer
27636   /var/log

Il s'agit de l'espace cumulé dans chaque répertoire: le chiffre affiché pour /var/log/installer tient compte de l'espace occupé par /var/log/installer/cdebconf.

Si on veut que du affiche strictement ce qui est occupé par chaque répertoire, il faut utiliser l'option -S:

du -S /var/log/installer/
14516   /var/log/installer/cdebconf
2208    /var/log/installer/

On retrouve bien que 14516 + 2208 font 16724.

Si vous n'êtes pas convaincus:

du /var/log/installer/
14516   /var/log/installer/cdebconf
16724   /var/log/installer/

Voià pour la base.

Maintenant, on peut obtenir un affiche plus sympatique avec l'option -h, --human-readable:

du -Sh /var/log/
1,2M    /var/log/cups
32K     /var/log/mysql
12K     /var/log/fsck
48K     /var/log/exim4
8,0K    /var/log/dbconfig-common
104K    /var/log/apt
4,0K    /var/log/firebird
36K     /var/log/lightdm
32K     /var/log/tor
4,0K    /var/log/speech-dispatcher
88K     /var/log/apache2
15M     /var/log/installer/cdebconf
2,2M    /var/log/installer
9,2M    /var/log/

Et si on cherche les répertoires qui occupent le plus de place, il suffit de faire appel à la commande sort:

du -Sh /var/log/ | sort -hr
15M     /var/log/installer/cdebconf
9,2M    /var/log/
2,2M    /var/log/installer
1,2M    /var/log/cups
104K    /var/log/apt
88K     /var/log/apache2
48K     /var/log/exim4
36K     /var/log/lightdm
32K     /var/log/tor
32K     /var/log/mysql
12K     /var/log/fsck
8,0K    /var/log/dbconfig-common
4,0K    /var/log/speech-dispatcher
4,0K    /var/log/firebird

Le flag -h de sort signifie --human-numeric-sort, et le flag -r signifie -reverse.

Et si en plus de l'espace occupé par les répertoires, je souhaite inclure celui des fichiers, il faut ajouter aux options de du le flag -a, --all.

Enfin, quand la commande du nous retourne trop de résultats, on peut en limiter l'affichage par un | head -n 25 par exemple.

dimanche 16 juin 2013

Afficher les permissions des fichiers en octal avec la commande stat

Lorsqu'il faut créer des répertoires ou donner des permissions aux fichiers sous Linux, les documentations d'installation des logiciels précisent bien souvent ces permissions en octal, plutôt que sous leur forme textuelle (par exemple: r-x).

Par exemple 777 pour donner tous les droits à tout le monde ou 755 pour donner les droits d'exécution et de lecture à tout le monde plus les droits d'écriture au propriétaire du fichier.

Malheureusement, la commande ls via son flag -l ne permet pas d'afficher les permissions des fichiers et répertoires en octal et il faut faire la conversion de tête.

C'est là que la commande stat entre en jeu via son flag -c qui précise le format d'affichage voulu.

Cette commande stat permet de préciser quelles informations on veut obtenir sur le fichier, et en particulier d'afficher les permissions en octal.

Par exemple:

stat -c '%A (%a) %n' Téléchargements/*.iso

qui donne le résultat suivant:

-rw-rw-rw- (666) Téléchargements/debian-7.0.0-amd64-netinst.iso

Si on veut se rapprocher de la sortie de la commande ls -l en ajoutant les permissions en octal, on pourra utiliser:

stat -c '%A (%a) %h %U %G %o %y %n' *

même si la façon d'afficher la date de dernière modification du fichier est différente de celle utilisée par ls -l.