Combien d'espace les répertoires vides prennent-ils?
Dans les systèmes de fichiers Windows et NTFS, il est dit "0 octet", ce qui est impossible.
Combien est réellement absorbé par un annuaire? Cela dépend-il du système de fichiers ou du système d'exploitation?
filesystems
disk-space
ShadowHero
la source
la source
Réponses:
Techniquement, ce que la fenêtre Propriétés vous montre, c'est le contenu du dossier qui, s'il est vide, occupe 0 octet sur n'importe quel disque.
Votre question porte sur l'espace occupé par la structure de dossiers sur un système de fichiers, qui en dépend évidemment. Sur FAT32, les seules choses que vous devez stocker sont des indicateurs (cachés, archivés) ainsi que le nom et le chemin. Dans NTFS, vous devez également stocker des autorisations et d'autres éléments. Dans l'ensemble, cet espace est presque négligeable.
L'espace occupé par une structure de répertoire vide dépend du nom et du chemin du dossier. Par exemple, supposons que vous placez tous les dossiers sur un lecteur racine (par exemple C :) et utilisez les 26 caractères alphabétiques; avec 1 milliard de noms uniques, vous pouvez avoir log_26 (1.000.000.000) = environ 7 (6.3065) nom de dossier de longueur de caractère. Ainsi, 7 octets * 1.000.000.000 équivalent à environ 7 Go d'espace.
Il s'agit d'un minimum basé uniquement sur la quantité de noms d'espace à prendre sur n'importe quelle structure. Comme cela sera montré, les systèmes de fichiers stockent beaucoup plus d'informations que le nom de fichier sur sa structure de fichiers.
Je pense avoir environ 1 million de dossiers et fichiers dans tous mes lecteurs, de sorte que la valeur n'est même pas atteinte en réalité. N'oubliez pas qu'il s'agit d'une estimation très approximative.
Les systèmes de fichiers les plus utilisés à l'heure actuelle peuvent être considérés (sans doute) comme FAT (File Allocation Table) et NTFS (New Technology File System). FAT tel que nous le connaissons est utilisé depuis 1996, lorsque Windows 95 est sorti avec FAT32. Bien que remplacé par d'autres systèmes de fichiers plus résistants, tels que NFTS (Windows), HFS + (OSX) ou ext3 (Linux), il est toujours largement utilisé dans les appareils portables ou dans les cartes mémoire ou les lecteurs flash, car il est bien pris en charge par la plupart des systèmes d'exploitation. et surtout, c'est simple.
Maintenant, pour ce qui compte. Les fichiers et répertoires d'une partition FAT, même s'ils ne contiennent rien, ont un nom, un emplacement, certains attributs, etc., qui sont stockés dans une zone appelée table de répertoires .
La table des répertoires est un fichier spécial (c'est-à-dire qu'il est caché à une utilisation régulière, de sorte que seuls le système d'exploitation et certaines applications peuvent y accéder directement). Il représente un répertoire (ou dossier) et tout fichier ou dossier stocké dans celui-ci a une entrée de 32 octets dans le tableau. Comme table d'annuaire est un fichier, elle occupe alors un ou plusieurs clusters (c'est-à-dire des boîtes avec une taille prédéfinie dans un disque, où ne tient qu'un seul fichier (ou une partie d'un)).
Ainsi, tout dossier ou répertoire, sur un lecteur moderne (> 512 Mo), a au moins une surcharge de 4 Ko, afin de stocker la table (source) . Cependant, cela signifie que vous pouvez stocker 128 fichiers différents (4 * 1024 B / 32 B = 128) sur le même dossier et que la surcharge de stockage des enregistrements est toujours la même de 4 Ko comme auparavant.
En s'appuyant sur le premier exemple, cela signifierait que le milliard de dossiers aurait une surcharge de 32 Go, plutôt que les 7 Go approximativement estimés que j'ai calculés. Ces 32 Go stockent non seulement le nom abrégé (8 caractères ASCII), mais les attributs, les indicateurs, les dates d'accès, de création et de modification et d'autres attributs hérités.
En supposant que vous lisiez tout cela, vous pourriez avoir une question: "Eh bien, tout va bien, mais comment sont les noms longs, tels que Wabbajack ou même les noms de hachage tels que e4d909c290d0fb1ca068ffaddf22cbd0 , stockés?"
Microsoft dans Windows 95 a décidé d'ajouter cette fonctionnalité pour améliorer l'expérience utilisateur. Pour éviter de casser un système "presque standard", ils ont utilisé une solution de contournement soignée appelée VFAT (Virtual FAT). Essentiellement afin d'ajuster le nom de fichier long dans le fichier, des enregistrements supplémentaires ont été écrits avant l'enregistrement de fichier réel (avec certains attributs spéciaux qui ne sont pas visibles par les systèmes antérieurs). Le système de nom de fichier long autorise une longueur maximale de 255 caractères UTF-16 (Unicode) (source) (source) .
Si vous deviez changer le premier exemple de sorte que chaque dossier ait 9 caractères, la surcharge doublerait de 32 Go à 64 Go, car un enregistrement supplémentaire devrait être écrit pour stocker le nom long.
Selon l' article Wikipedia sur NTFS, toutes les autorisations sont stockées dans la table de fichiers maîtres. Son espace peut être vu apparemment à travers le défragmenteur de disque, comme indiqué ici .
La taille d'un enregistrement MFT à partir d'un dossier ou d'un fichier est décrite ici :
Ainsi, dans NTFS, les dossiers occupent au moins 1 Ko d'espace, à moins qu'ils aient des listes d'arguments et d'autorisations très longues; à ce stade, l'enregistrement MFT occupe un cluster supplémentaire dans la partition, dont la taille dépend de la façon dont il a été formaté, bien que pour plus de 2 Go, Microsoft dans ce post recommande des clusters de 4 Ko.
la source
Pour un exemple du monde réel, je viens d'enregistrer mon espace libre, puis j'ai créé une grande structure de répertoires et soustrait le nouveau libre pour trouver combien d'espace a été utilisé. J'ai créé les répertoires 0-6 pour chaque jour de la semaine, puis dans les répertoires 0-23 pour les heures de la journée, puis 0-59 pour les minutes de l'heure. Au total, ses 10 080 répertoires. Mon utilisation du disque a changé de 6 926 336 octets. Cela équivaut à 687 octets par répertoire. Si vous vous en souciez, cela équivaut également à 0,0006% d'un lecteur de 1 To (si vous calculez 1 To en 1024 ^ 4).
la source
Sur Windows 10, j'ai créé 1 000 000 de dossiers vides et, selon la
getsize
fonction de python , il a pris 200540160 octets d'espace. Cela représente en moyenne 200,54016 octets par dossier.la source