Wie viele Dateien in einem Ordner sind zu viele? [geschlossen]

Vor vielen Jahren erinnere ich mich vage daran, dass der Finder in Mac OS X Probleme bekam, wenn ein Ordner 2.000 - 3.000 Elemente oder mehr enthielt.

Apple doc sagt, dass das HFS Plus -Dateisystem eine theoretische Grenze von 2 Milliarden Dateien pro Ordner in allen Mac OS X-Versionen hat.

Was ist die praktische Grenze?

Wird es ein Problem sein, 10.000 Fotos in einem Ordner zu haben?

In 10.6, das ich immer noch bei der Arbeit verwende. das 2000-3000-Problem besteht immer noch. Ich hatte nicht die Gelegenheit, diese Art von Masse an Dateien in späteren Versionen zu verwenden. Aber ich vermute, wenn die Dokumente immer noch das Gleiche sagen, dann könnte das gleiche Limit ein Problem sein. Ich sollte hinzufügen, dass ich nie das Problem von 2000-3000 auf dem lokalen Laufwerk habe. Aber nur über ein Netzlaufwerk.
Ich weiß nicht genau, wo die Grenze gezogen wird, aber Millionen von Dateien werden Sie definitiv in ein sehr großes Problem bringen (viel Glück beim Löschen eines solchen Ordners sogar mit rm -rf).
Zumindest in frühen Versionen von macOS X 10.6 traten Leistungsprobleme auf, wenn Sie eine "große" Menge von 2k bis 3k Dateien in Ihrem Desktop-Ordner ablegten. Hat etwas mit dem Zeichnen aller Symbole auf dem Desktop zu tun. Ich habe nichts von einem Problem mit anderen Ordnern gehört.
Ich werde das auf Eis legen. Wenn wir weitere Antworten wünschen, möchten wir erklären, welche Art von Timing / Anforderung ein Warten "praktisch" macht - die Antwort zum Erstellen von 10.000 Dateien zeigt, dass wir auf den meisten Systemen die Geduld verlieren werden, um uns Dateien vorher im Finder anzusehen Das System wird langsamer oder kann die Dateien nicht verarbeiten.
@bmike Ich stimme Ihnen zu, außer dass das neue Apple File System (APFS) , das HFS + ersetzt, diesem Thema eine neue Wendung gibt. Vielleicht sollte ich speziell eine neue Frage zu APFS stellen, falls noch nicht vorhanden?
Ja @BasilBourque - wir könnten eine neue sehr spezifische Frage verwenden - vielleicht hier verlinken, um zu erklären, wo wir HFS + -Einschränkungen katalogisieren. Ich würde auf jeden Fall explizit angeben, wo Ihre Grenzen liegen. 60 Sekunden warten, bis eine bestimmte Finder-Ansicht gerendert wird, was 10 % CPU-Auslastung beim Sortieren nach Namen verursacht, oder was auch immer Sie für „praktisch“ oder „einschränkend“ halten
Diese Probleme sind oft nuancierter als nur "wie viele Dateien" passen. Es kann davon abhängen, welche Dateisystemattribute diese Dateien oder Verzeichnisse haben und auch vom Verlauf des Verzeichnisses (manchmal kann der Datenbankeintrag eines Verzeichnisses so stark fragmentiert werden, dass sogar ein fast leeres Verzeichnis unbrauchbar werden kann). Am Ende des Tages musst du es einfach ausprobieren und sehen, wie es dir geht.
Neugierig zu wissen, ob sich die Situation in den letzten Jahren geändert hat .... Gibt es immer noch ein Performance-Problem mit Ordnern mit > 10k Dateien darin?

Antworten (5)

Scheint, dass ungefähr 10.000 sicher sind. Ich habe jedoch festgestellt, dass der Finder, wenn Sie viel höher gehen, wie 50.000, die Dateien im Verzeichnis nicht einmal auflisten wird, wenn Sie versuchen, es zu durchsuchen. Ich vermute, dass viele Datenwiederherstellungsprogramme aus diesem Grund alle 10.000 Dateien einen neuen Ordner erstellen, wenn Sie Dateien in RAW schnitzen.

Neugierig zu wissen, ob sich die Situation in den letzten Jahren geändert hat ....

Sie können dies ganz einfach selbst ausprobieren, indem Sie Folgendes im Terminal ausführen

mkdir ~/t
cd ~/t
dd if=/dev/random of=test bs=1024 count=16
for i in {1..10000}; do cp test test.$i; done

um einen Ordner mit 10'000 Dateien mit je 16kB zu erstellen (ersetzen Sie die 16 in der dritten Zeile durch eine andere Zahl für unterschiedlich große Dateien).

Ein letztes Wort der Warnung: Tun Sie das nicht in Ihrem Home-Verzeichnis, es sei denn, Sie wollen Ihren Ruhm bei Ihrem lokalen Systemadministrator steigern. Abhängig vom Backup-Tool seiner Wahl mag er möglicherweise die Auswirkungen seines Tools nicht, wenn er versucht, Ihr wertvolles Experiment zu archivieren. Experimente wie diese beschränken sich am besten auf Medien, die nicht Teil eines Backup-Plans sind. /tmpwäre eine bessere Wahl als ~/.
@TatjanaHeuser Ich bin mir nicht sicher, woher Ihr Interesse an diesem Thema kommt, aber unter macOS ist ein Benutzer normalerweise der lokale Administrator (auch wenn er sich dessen möglicherweise nicht bewusst /tmpist) und ein Symlink, zu /private/tmpdem sich standardmäßig auf der (einzigen) Hauptpartition befindet .
Richtig für Desktop-Macs - und es ändert nichts am Backup-Problem. Auch unter MacOS /tmpwird zwischen Neustarts gelöscht. (Anders als /var/tmp). #alt.follkore.computers beiseite: Ich kenne Administratoren, die den neugierigen Benutzer verfluchen, der eine winzige Datei mit einem großen Loch erstellt hat, um lseekes auszuprobieren, wenn die Anzahl der Bänder für ihre Sicherung die Kapazität des zu sichernden Dateisystems weit überschritten hat ...
@TatjanaHeuser Ich bin von Fotoreisen zurückgekommen und habe Hunderte von RAW-Dateien zwischen 30 und 40 GB auf meinen Mac hochgeladen. TimeMachine hat das ohne Probleme gemeistert :-)
@nohillside 40 GB RAW-Dateien sind überhaupt kein herausforderndes Szenario. Dateisysteme fallen normalerweise um, wenn Sie Terabytes an winzigen Dateien haben. Große Dateien sind fast nie ein Problem.

Antworten anhand eines praktischen Beispiels: Ich habe jetzt 326.000 Dateien in einem Ordner, die von einer Anwendung erstellt wurden, die Bits von einem Server herunterlädt. Die Dateien sind gezippte XML-Dateien, und meine Anwendung extrahiert XML-Daten daraus und speichert sie in einer lokalen Datenbank.

Die Anwendung wird über die Befehlszeile ausgeführt. Alles funktioniert ohne Probleme, aber rm * oder ls *funktioniert nicht aufgrund der Erweiterung des Platzhalters (Fehlermeldung Argument list too long). Da die Dateien in einem temporären Ordner gespeichert sind, kann ich den Ordner nach der Verarbeitung der Dateien einfach entfernen.

Ich habe jedoch nicht versucht, den Ordner mit dem Finder zu öffnen. Ich vermute, dass das sehr langsam sein könnte, wenn überhaupt möglich.

Hier der gleiche Anwendungsfall – ich habe über 290.000 Dateien von einer Website, die ich archiviert habe, in ein Verzeichnis heruntergeladen … und den Fehler gemacht, sie im Finder zu öffnen. Nachdem ich es ungefähr 20 Minuten lang drehen ließ, habe ich den Finder neu gestartet, dann diesen Ordner geschlossen und alles andere im Terminal erledigt (viele find | xargs!)

Es sind mehrere Grenzen zu berücksichtigen, die in einigen Kommentaren angesprochen wurden:

  • Argumentlänge und Shell-Erweiterung - ein einfacher echo *Fehler wird behoben, wenn die verkettete Länge der Dateinamen, die das Sternchen erweitert, diese Grenze erreicht. Wenn Sie in diese Falle laufen, findwird es oft Ihr Freund sein. find . -depth 1 -type f | exec echo {} \;wäre ein funktionierender Ersatz für das echo *oben erwähnte Unschuldige, beschränkt auf das Auflisten von Dateien. ( echodurch die Aktion Ihrer Wahl zu ersetzen)

  • Beschränkungen pro Programm für die Größe interner Datenstrukturen, die zum Halten von Verzeichnisinhalten verwendet werden (Finder, alle Arten von Tools, die versuchen, Verzeichnislisten zu lesen).

  • Cache-Größe für die Verzeichnissuche. Während das Dateisystem möglicherweise 2,1 Milliarden Dateien innerhalb der Festplattenstruktur eines Verzeichnisses speichern kann, ist es nicht angenehm, mit dieser Zahl zu arbeiten, und Sie wären gut beraten, wenn Sie eine Strategie zum Sortieren von Dateien in Unterverzeichnisse einführen Sie haben es mit Strukturen dieser Größe zu tun. (Hinweis: Diejenigen, die Web-Caching-Strukturen entwerfen, mussten sich damit auseinandersetzen - siehe Maltzahn/Richardson, Reducing the Disk I/O of Web Proxy Server Caches, Usenix 1999 .

Um den Zugriff auf häufig verwendete Plattenstrukturen zu beschleunigen, verwenden Dateisysteme (Speicher-)Cache, und die Größe dieser Caches ist begrenzt. Hier beginnt die plötzliche Strafe für große und nicht optimal strukturierte Verzeichnisse zu treffen. Je nach Häufigkeit und Intensität des Zugriffs auf diese Verzeichnisse kann die Strafe erheblich sein.

Der Artikel von Tsai et al. aus dem Jahr 2015, How to get more value from your file system directory cache wäre wahrscheinlich eine der einfacheren Einführungen in das Thema.

Apple hat dazu ein Support-Dokument :

Maximale Anzahl von Dateien (oder Dateien und Ordnern) in einem Ordner (alle Mac OS X-Versionen)

Bis zu 2,1 Milliarden (2)

Ja, in der Tat habe ich diesen Link und diese Tatsache in meine Frage aufgenommen (2. Absatz). Ich frage nach praktischen realen Grenzen.
Danke dafür, ich habe herzlich gelacht. Versuchen Sie, 4M-Dateien in einem einzigen Ordner zu haben, und lassen Sie mich wissen, wie es geht (Hinweis - Sie können sie nicht anzeigen, können nicht ls, können nicht find, können sie nicht löschen und so weiter).
Der Link ist jetzt kaputt. Aktualisiere es?