
Ich habe auch gefragteine Schwesterfrage für Linux.
Unter Windows (ich habe es gerade getestet):
- Die Größe eines leeren Ordners beträgt 0 Bytes
- Die Größe einer leeren Datei beträgt 0 Bytes
Allerdings haben Dateien und Ordner offensichtlich Namen, die irgendwo gespeichert werden müssen.
- Wo werden sie ungefähr gespeichert?
- Ist der maximal verfügbare Speicher zum Speichern dieser Daten eine vordefinierte Zahl oder hängt er vom verfügbaren Speicherplatz auf der Festplatte ab?
- Benötigt eine leere Datei mit einem kurzen Namen weniger Speicherplatz als eine leere Datei mit einem längeren Namen? (Oder hat die Datenstruktur, in der diese Namen gespeichert sind, vielleicht eine feste Byteanzahl für jede Datei, die die verbleibenden Bytes möglicherweise mit auffüllt
\0
?) - Benötigt ein leerer Ordner mit einem kurzen Namen weniger Speicherplatz als ein leerer Ordner mit einem längeren Namen?
- Benötigt ein leerer Ordner namens
foobar
weniger, gleich viel oder mehr Speicherplatz als eine leere Datei namensfoobar
? - Benötigt eine leere Datei bei
C:\empty.txt
weniger, gleich viel oder mehr Speicherplatz als eine leere Datei beiC:\long\nested\path\until\the\empty\file\is\reached\empty.txt
?
Antwort1
Ich habe auch eine Schwesterfrage zu Linux gestellt.
Der Unterschied, wenn überhaupt, besteht nicht zwischen Windows und Linux (und stellen Sie wirklich die gleiche Frage für macOS, für Solaris usw.?), sondern zwischen der tatsächlichenDateisystemeWird zum Speichern von Dateien auf der Festplatte verwendet.
Obwohl jedes Betriebssystem seine bevorzugten Dateisysteme hat, verhält sich FAT32 unter Windows immer noch genauso wie FAT32 unter Linux; NTFS unter Linux funktioniert genauso wie NTFS unter Windows; und so weiter. Gleichzeitig können sich verschiedene Dateisysteme unter demselben Betriebssystem sehr unterschiedlich verhalten – Ext4 und Btrfs (oder FAT32 und NTFS) sindMeilengetrennt, selbst wenn sie das gleiche Betriebssystem verwenden.
Die Größe einer leeren Datei beträgt 0 Bytes
In allen Fällen beträgt die angegebene Dateigrößestetsnur der eigentliche Inhalt, nicht die Metadaten. Praktisch alle heutzutage verwendeten Dateisysteme betrachten dies als zwei verschiedene Dinge – wenn Sie sich vorstellen, dass eine Datei aus ihrem Namen und den aneinandergefügten Daten besteht, nein, so wird es normalerweise nicht gemacht.
Der Name einer Datei wird oft gespeichertim übergeordneten Verzeichnis(dadurch sind auch Hardlinks möglich, d. h. eine Datei hat mehrere Namen.) Lange Dateinamen können dazu führen, dass das übergeordnete Verzeichnis größer erscheint.
Die restlichen dateibezogenen Metadaten befinden sich möglicherweise in der Nähe des Namens oder, häufiger, in einem separaten Bereich (z. B. der Inode-Tabelle).
Ist der maximal verfügbare Speicher zum Speichern dieser Daten eine vordefinierte Zahl oder hängt er vom verfügbaren Speicherplatz auf der Festplatte ab?
Das ist unterschiedlich. Jede Art von Dateisystem kann seine eigenen Grenzen haben – einige haben feste Maximalwerte, andere sind auf einen bestimmten Prozentsatz der Festplatte beschränkt usw.
Beispielsweise kann in FAT jedes Verzeichnis eine bestimmte maximale Anzahl von „Verzeichniseinträgen“ haben (wobei Dateinamen im MS-DOS-Stil 8.3 jeweils einen Eintrag belegen, lange Dateinamen jedoch mehrere). Dies gilt nicht für NTFS, obwohl beide unter Windows laufen.
In Ext2/Ext4 ist das gesamte Dateisystem auf eine bestimmte Anzahl von „Inodes“ (einen für jede Datei oder jedes Verzeichnis) beschränkt, die es als Liste von Datensätzen fester Größe speichert, und der Bereich ist immer auf einen festen Prozentsatz des Speicherplatzes eingestellt. Es kommt nicht selten vor, dass auf einer Ext4-Festplatte die Inodes ausgehen. Dies gilt nicht für XFS oder Btrfs, die beide dynamische Datenstrukturen (normalerweise B-Bäume) verwenden und einfach bei Bedarf wachsen.
Benötigt ein leerer Ordner mit einem kurzen Namen weniger Platz als ein leerer Ordner mit einem längeren Namen? (Oder hat die Datenstruktur, in der diese Namen gespeichert sind, vielleicht eine feste Byteanzahl für jede Datei, die die verbleibenden Bytes möglicherweise mit \0 auffüllt?)
Das ist unterschiedlich. Bei einigen (den meisten?) Dateisystemen ist der Name tatsächlich variabel lang.
Bei einigen anderen Dateisystemen nur bei bestimmten Grenzwerten. Auch hier wären FAT/exFAT und UFS mit ihren Verzeichnisslots fester Größe Beispiele – wenn ein Slot belegt ist, dann ist er belegt, egal, ob er einen 1-Byte-Dateinamen mit Nullbytes oder einen 16-Byte-Dateinamen speichert.
Benötigt ein leerer Ordner namens „foobar“ weniger, gleich viel oder mehr Speicherplatz als eine leere Datei namens „foobar“?
Auch hier hängt es vom Dateisystem ab.
Wenn ich das richtig verstehe, wären sie in FAT gleich. In NTFS vermute ich, dass der Ordner größer wäre, aber an diesem Punkt ist das nur eine Vermutung.
Benötigt eine leere Datei unter C:\empty.txt weniger, gleich viel oder mehr Speicherplatz als eine leere Datei unter C:\long\nested\path\until\the\empty\file\is\reached\empty.txt?
Die Dateiselbst, immer gleich, da die Datei ihren vollständigen Pfad nicht kennt – das Betriebssystem findet ihn, indem es die übergeordneten Verzeichnisse durchsucht. Das ist wahrscheinlich für alle Dateisysteme gleich.
Diese Ordner würden jedoch einen Speicherplatz ungleich Null belegen.