Hallo, warum ist bei allen Dateisystemen (optische Formate mal ausgelassen wie ISO9660,...) die maximale Dateinamenlänge 255 byte? Siehe z.B. hier: http://wiki.ubuntuusers.de/Dateisystem
255 Zeichen != 255 Byte ;) Das mit den 255 Zeichen ist historisch entstanden und eine feste größe vereinfacht das handling mit den inodes etc..
Andi ... schrieb: > Das mit den 255 Zeichen ist historisch entstanden und eine feste größe > vereinfacht das handling mit den inodes etc.. Nicht jedes FS nutzt inodes.
Andi ... schrieb: > 255 Zeichen != 255 Byte ;) Stimmt. 3 Zeichen in 2 Bytes gabs im Filesystem auch schon.
Heute ist eher sowas wie UTF-8 Encoding für byte != Zeichen relevant.
Andi ... schrieb: > vereinfacht das handling mit den inodes etc.. Die Dateinamen werden nicht im Inode gespeichert. Ansonsten wäre das mit den Hardlinks schwierig zu implementieren. Wenn das Filesystem überhaupt Inodes verwendet.
A.H. schrieb: > Heute ist eher sowas wie UTF-8 Encoding für byte != Zeichen relevant. Wobei das Limit dann trotzdem eher bei 255 Bytes denn bei 255 Zeichen liegt. Damit ist dem OS die Zeichencodierung selbst völlig egal, es schreibt einfach einen Bytestrom ins jeweilige Verzeichnis. Dass es ein Limit gibt, hat eher pragmatische Gründe für die Implementierung.
Jörg Wunsch schrieb: > hat eher pragmatische Gründe für die > Implementierung. Man sollte aber nicht glauben daß diese 255 Zeichen für EINEN Namen gedacht waren. Bei DOS war schon bei 66 Zeichen Schluss und bei MS wurden diese 255 ab Wurzel gerechnet. Wer also lange Ordner wie c:\1234567890\1234567890\ benutzt, sollte sich besser kurz fassen! Das böse Erwachen kommt, wenn das Backup diese Daten nicht sichern konnte.
oszi40 schrieb: > Man sollte aber nicht glauben daß diese 255 Zeichen für EINEN Namen > gedacht waren. Bei den üblichen Unixen schon. Die maximale Pfadlänge wurde/wird dann typisch auf 1023 Zeichen begrenzt. Praktisch kann man auch noch tiefer geschachtelte Pfade anlegen, allerdings kann man diese dann nicht mehr geschlossen (als absoluten Namen) darstellen, sondern nur noch relativ ansprechen, und damit bekommen dann Backup-Programme auch schon mal ihre Huddeleien.
oszi40 schrieb: > Wer also lange Ordner wie > c:\1234567890\1234567890\ benutzt, sollte sich besser kurz fassen! Das > böse Erwachen kommt, wenn das Backup diese Daten nicht sichern konnte. oder halt aktuelle Software verwenden und nicht dinge aus der Steinzeit. > The Windows API has many functions that also have Unicode versions to > permit an extended-length path for a maximum total path length > of 32,767 characters.
datenqualle schrieb: > warum ist bei allen Dateisystemen (optische Formate mal ausgelassen wie > ISO9660,...) die maximale Dateinamenlänge 255 byte? Nicht bei allen, aber bei /vielen/: http://en.wikipedia.org/wiki/Comparison_of_file_systems Es gibt also durchaus etliche Dateisysteme mit kürzeren und sogar einige mit längeren Dateinamen. Einer der Gründe, warum die Dateinamenlänge überhaupt begrenzt wird, liegt darin, dass man dadurch für jeden Namen einen Speicherbereich fester Größe im Dateisystem reservieren kann. Das erleichtert bspw. das Umbenennen von Dateien. Die Größe dieses für jeden Namen reservierten Speicherbereichs ist ein Kompromiss aus der Möglichkeit, aussagekräftige Namen verwenden zu können, und dem Speicherverbrauch. Die 255 Bytes haben sich hier eben als sinnvoll erwiesen.
Peter II schrieb: > oder halt aktuelle Software verwenden und nicht dinge aus der Steinzeit. > >> The Windows API has many functions that also have Unicode versions to >> permit an extended-length path for a maximum total path length >> of 32,767 characters. Diese Grenze ist aber eher theoretischer Natur, da die meisten bei Windows mitgelieferten Tools nach wie vor nur 260 Zeichen unterstützen. Dazu gehört auch der Explorer als zentrales Dateiverwaltungstool, so dass man sich nur Schwierigkeiten einhandelt, wenn man mit "modernen" Programmen Verzeichnisstrukturen mit größerer maximaler Pfadlänge anlegt.
Jörg Wunsch schrieb: > Bei den üblichen Unixen schon. Die maximale Pfadlänge wurde/wird > dann typisch auf 1023 Zeichen begrenzt. Unter Linux sind es derzeit 4096 Bytes. Das reicht immerhin für 16 Verzeichnisebenen mit der maximalen Dateinamenlänge, stellt also keine allzu große Einschränkung dar.
:
Bearbeitet durch Moderator
Yalu X. schrieb: > Unter Linux sind es derzeit 4096 Bytes. Das ist aber hauptsächlich für Linux-Kommandozeilen-Fanatiker von Interesse, die immer behaupten, sie würden sowas aus dem Kopf fehlerfrei eintippen. In der Praxis sollte man einen Dateinamen auf einem normalen Bildschirm auch noch lesen können. Die Zahl 255 stammt von Programmiersprachen, die Strings mit Längenangabe kennen - daher gibt es solche mit 255 und mit 65535 Zeichen Länge. Wie Microsoft auf 260 kommt bleibt wohl ein Geheimnis, vielleicht wollte man 255 plus ein bisschen Sicherheit. Aber wer weiss schon was MS so denkt. Georg
Georg schrieb: > Das ist aber hauptsächlich für Linux-Kommandozeilen-Fanatiker von > Interesse, die immer behaupten, sie würden sowas aus dem Kopf fehlerfrei > eintippen. In der Praxis sollte man einen Dateinamen auf einem normalen > Bildschirm auch noch lesen können. Deine Annahme steht auf töneren Füssen, ich habe sowas eher bei Usern gesehen die alles in den Dateinamen packen, und da ist nicht nur der Dateiname lang, auch die Verzeichnisstruktur hat es in sich. BTW: bei SysVR3 war im Standardfilesystem die Dateinamenslänge maximal 14 Zeichen. unter BSD gab es da schon 254 Zeichen pro Dateiname. Die 1024 Zeichenlimitierung auf so manchem UNIX kommen von fest einkompilierten Buffergrössen.
Georg schrieb: > Yalu X. schrieb: >> Unter Linux sind es derzeit 4096 Bytes. > > Das ist aber hauptsächlich für Linux-Kommandozeilen-Fanatiker von > Interesse, die immer behaupten, sie würden sowas aus dem Kopf fehlerfrei > eintippen. In der Praxis sollte man einen Dateinamen auf einem normalen > Bildschirm auch noch lesen können. Es ging bei dieser Zahl nicht um Datei- sondern Pfadnamen. Und für Pfadnamen sind die 260 Bytes von Windows (bzw. dessen Tools) mitunter schon etwas knapp. Man merkt das aber, wie oszi40 oben schon geschrieben hat, meist erst, wenn das Backupprogramm nicht mehr komplett durchläuft.
Georg schrieb: > Die Zahl 255 stammt von Programmiersprachen, die Strings mit > Längenangabe kennen Nein, sie stammt vom (BSD) UFS, welches im Verzeichnis statt der starren 14 Zeichen des alten UNIX-Dateisystems flexibel lange Namen eingeführt hat, denen jeweils ein Längenbyte vorangestellt worden ist. Beispiel gefällig?
1 | 000a7800 09 00 00 00 0c 00 04 01 2e 00 00 00 08 00 00 00 |................| |
2 | 000a7810 0c 00 04 02 2e 2e 00 00 13 07 00 00 14 00 08 0a |................| |
3 | 000a7820 52 65 70 6f 73 69 74 6f 72 79 00 cc 14 07 00 00 |Repository......| |
4 | 000a7830 10 00 08 04 52 6f 6f 74 00 a8 e3 c1 16 07 00 00 |....Root........| |
5 | 000a7840 c4 01 08 07 45 6e 74 72 69 65 73 00 00 00 00 00 |....Entries.....| |
6 | 000a7850 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |
Habe einfach mal auf der Platte gewühlt, scheint ein altes CVS-Metadatenverzeichnis zu sein. Man sieht deutlich "01 2e", der Eintrag für "dot", dann "02 2e 2e" (dot-dot), danach dann "Repository" mit 10 Zeichen (0a) Länge usw. usf. Dazwischen die Zeiger auf die Inodes.
Yalu X. schrieb: > Unter Linux sind es derzeit 4096 Bytes. Das reicht immerhin für Dann verbinde mal einen W7-PC mit diesem Netzlaufwerk-Ordner und berichte uns was z.B. dir /s so Schönes anzeigt bei dieser Länge. :-)
Es gab auch schon Dateisysteme mit fixen 8 oder 8.3 Dateinamenlängen :-)
Wenn ein Windows-Server den Pfad D:\tree-yyyyyy\share-zzzzz\sehr-langer-filename.txt per CIFS exportiert, und ein Client darauf als X:\sehr-langer-filename.txt zugreift, dann gelten für den Client die 260 Zeichen für seinen Pfad, weshalb der Pfad aus Sicht des Servers länger als 260 Zeichen wird. Infolgedessen kann der Server mit den üblichen Programmen nicht per D:\... darauf zugreifen, nur mit UNC-Pfaden. Was manche Backup-Programme deshalb machen. Auf lokale Files per \\?\... zuzugreifen ist nicht unbedingt intuitiv.
:
Bearbeitet durch User
Jörg Wunsch schrieb: > flexibel lange Namen > eingeführt hat, denen jeweils ein Längenbyte vorangestellt worden ist. Genau das ist doch ein String mit Längenangabe, wie in Pascal - was soll also die Meckerei? Für völlig unbedarfte nochmal genau: so ein String besteht aus einem Längenbyte (daher die max. 255) und den Zeichen des Strings, wobei soviel Platz reserviert ist wie in der Deklaration angegeben und soviel davon belegt ist, wie die aktuelle Länge besagt - und die steht im Längenbyte. Soll ich eine Zeichnung machen?? Georg
Georg schrieb: > Genau das ist doch ein String mit Längenangabe, wie in Pascal - was soll > also die Meckerei? Es hat eben nur nichts mit Programmiersprachen zu tun.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.