Réponses:
Il s'agit de la taille de l'espace sur le disque utilisé pour stocker les méta-informations du répertoire (c'est-à-dire la table des fichiers appartenant à ce répertoire). S'il s'agit de 1024 octets, cela signifie que 1024 octets sont utilisés sur le disque (il attribue toujours des blocs entiers) à cette fin.
La "taille d'un répertoire" imprimée avec ls -l
est (comme pour tout type de fichier) la valeur indiquée par l' stat()
appel en statbuf.st_size
.
Ce que cela st_size
signifie pour les répertoires dépend entièrement du type de système de fichiers. Si vous ne connaissez pas le type de système de fichiers et comprenez ses concepts, vous ne pouvez rien déduire de la valeur dans st_size
.
Dans le système de fichiers historique UNIX généralement nommé v7-fs
, les répertoires étaient des entrées répétées de 16 octets contenant un numéro inode de 16 bits et 14 octets de nom de fichier. La "taille" d'un répertoire était significative par rapport à l' read(2)
opération et augmentait ou restait toujours telle quelle. Les entrées .
et ..
sont créées en les liant manuellement au répertoire actuel et au répertoire supérieur. Le nombre de liens pour un répertoire vierge vierge est de 2.
Dans le système de fichiers BSD-4.2 qui est appelé depuis 1989 (SVr4) ufs
, les répertoires sont une série d'enregistrements de longueur variable qui utilisent un format non accordé pour être stable. Les commandes d'espace utilisateur ne sont donc pas autorisées à lire ce format. La "taille" indiquée est la taille en octets comme dans la v7-fs, la taille augmente ou reste normalement telle quelle, mais les versions les plus récentes du système de fichiers peuvent réduire la taille dans certaines conditions - mais pas toujours au moment prévu. Le nombre de liens indiqué pour un répertoire vide est égal à 2 v7-fs
.
Dans WOFS
, le système de fichiers que j'ai conçu et mis en œuvre entre l'été 1988 et le mois de mai 1991, les répertoires indiquent toujours la "taille" 0 et n'ont jamais un type de contenu pouvant être lu à l'aide de l' read(2)
appel. En effet, il WOFS
s’agit du premier système de fichiers avec copie sur écriture et des WOFS
fichiers indiquent le répertoire dans lequel ils se trouvent au lieu de figurer dans le répertoire. Si vous lisez un WOFS
répertoire en utilisant readdir()
, vous n'obtenez que des données pour les entrées prévues, mais jamais pour .
et ..
. Le nombre de liens d’un répertoire vide est égal à WOFS
1 et l’ensemble du comportement est entièrement conforme à POSIX.
En ZFS
, cela a été mis en œuvre après avoir lu les WOFS
journaux. ZFS
est un système de fichiers avec copie sur écriture et ses auteurs ne nient pas avoir copié les concepts WOFS
. Les répertoires sur ZFS signalent l' number of directory entries
in st_size
, alors la "taille" rapportée n'a aucune signification réelle en ce qui concerne l'espace disque occupé par les données du répertoire. Il n'y a pas d' entrées .
et ..
dans un répertoire ZFS, mais si vous appelez readdir()
, ces entrées sont falsifiées et renvoyées pour les deux premières opérations. ZFS est le seul FS de la liste qui ne prend pas en charge les répertoires avec liaison fixe, mais le nombre de liaisons déclaré pour les répertoires est toujours égal à 2. Ces deux irrégularités dans ZFS sont implémentées pour réduire la confusion dans les programmes historiques non POSIX.
Semblable à ZFS, WAFL copie certaines idées mais pas toutes WOFS
. Netapp a WAFL
été écrit trois ans après la WOFS
publication du document, WAFL est une copie sur écriture, mais WAFL semble indiquer des valeurs de "taille" pouvant correspondre à la "taille réelle du répertoire", en supposant que le répertoire a un contenu.
Un répertoire réserve 4096 octets (au minimum) pour les métadonnées sur lui-même et son contenu.
En outre, l'unité d'allocation par défaut (bloc) pour le système de fichiers ext2 / ext3 / ext4 est 4096 octets; par conséquent, un répertoire ne peut pas être plus petit.
Sur différents systèmes de fichiers, vous pouvez trouver des répertoires avec des tailles par défaut différentes, en raison de la taille de bloc par défaut du système de fichiers.
Les tailles de répertoire peuvent également croître de manière dynamique à mesure qu'elles sont remplies, mais une fois rempli, l'espace réservé aux métadonnées ne peut pas être réaffecté sans suppression du répertoire.
Un répertoire est juste un répertoire, comme un répertoire téléphonique. C'est juste un fichier avec une liste de chiffres et un nom à côté d'eux. Chaque numéro fait référence à un fichier dans le système de fichiers (un numéro inode) et le nom correspond au nom du fichier.
Vous avez besoin d'espace disque pour enregistrer ces données. La manière dont elles sont allouées, développées et réduites dépend du système de fichiers.