Question du -sh * montre beaucoup plus d'espace utilisé que ls -lah


Je ne parviens pas à manquer d'espace disque sur l'un des serveurs de mes clients.

La sortie des commandes ls -lah dans /var/lib/mysql spectacles:

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Mais quand je vérifie la taille du fichier dans le même catalogue avec la commande du -sh *, la sortie montre:

22G     database_xyz

Pourquoi la sortie de thoose donne deux résultats complètement différents?

Il ne me reste que 2,2 Go sur le lecteur.

root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg-root    49G   44G  2.2G  96% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                 1002M  108K 1002M   1% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/sda1             228M   16M  200M   8% /boot

MODIFIER:

Il s'avère que database_xyz est en fait un catalogue, pas un fichier. Donc, la confusion a été créée par mon cerveau.


4
2017-11-09 08:26


origine


Double possible de Quelle est la difference entre du -h et ls -lh? - Handyman5


Réponses:


Il semble que vous ayez un malentendu sur ce qu'on vous dit. le ls -lah La commande liste le contenu du répertoire en cours. Dans ce cas particulier c'est /var/lib/mysql. Entre autres choses on vous a dit ceci

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Vous comprenez mal ce que cela vous dit.

Vous pouvez considérer un répertoire comme un fichier plat contenant une liste d'entrées de répertoire. (simplement) Une entrée de répertoire est un nom de fichier et un pointeur sur l'emplacement de ce fichier sur le disque. Cette information occupe de l'espace disque.

Quoi

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

vous dit est qu'il y a une entrée de répertoire dans /var/lib/mysql appelé database.xyz. Cette entrée est pour un type de fichier d ce qui indique qu'il s'agit d'un répertoire et entre autres choses, la taille du répertoire 'fichier' est de 16K.


7
2017-11-09 08:54



Oui ,,, je viens de découvrir que le database_xyz est un répertoire, pas un fichier ... - Orphans
Un répertoire n'est rien de plus qu'un fichier avec une liste des fichiers qu'il contient. Ce fichier de liste de répertoires a donc une taille de fichier. Vous pouvez voir le fichier en utilisant vi database_xyz si le nom de répertoire est database_xyz. - SPRBRN
@SPRBRN Je ne pense pas que ce soit tout à fait correct. Je pense que vi reconnaît qu'il s'agit d'un répertoire et le traite de manière "spéciale". Jeter un coup d'œil à ext4.wiki.kernel.org/index.php/… puis essayez de "cat" ou plus d'un fichier de répertoire et voyez ce qui se passe. - Iain


Pour connaître la taille de database_xyz fichier seulement tapez

du -sh database_xyz

vous trouverez le résultat exact


2
2017-11-09 08:54



Oui ,,, je viens de découvrir que le database_xyz est un répertoire, pas un fichier ... - Orphans


ls n’est pas le bon outil pour trouver la taille du répertoire. Cela ne fonctionne que pour les fichiers, pas les répertoires.

Je peux voir que vous listez les détails d’un répertoire (le premier d carboniser)

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Utilisation du au lieu. C'est un poste similaire à stackoverflow.


1
2017-11-09 08:31



Oui ,,, je viens de découvrir que le database_xyz est un répertoire, pas un fichier ... - Orphans