Kann das Speichern von 300k-Dateien in einem Ordner Probleme verursachen?

1933
kolinko

Ich crawle mit wget eine große Website (über 200.000 Seiten) (gibt es übrigens ein besseres Tool?). Wget speichert alle Dateien in einem Verzeichnis.

Die Partition ist HFS (denke ich). Wird es Probleme geben, wenn ich alle Dateien in einem Verzeichnis habe? Angenommen, ich greife auf alle nur von der Konsole aus zu (ich weiß, dass der Finder Probleme mit dirs> 5k-Dateien hat).

Oder gibt es vielleicht eine Möglichkeit, eine Mikropartition zu erstellen, die komprimiert würde und einen schnellen, optimierten Zugriff auf diese Menge an Dateien ermöglichen würde?

1
Welche Flaggen verwenden Sie mit wget? Majenko vor 13 Jahren 0
@ Matt: -np, warum fragst du? kolinko vor 13 Jahren 0
Normalerweise gebe ich -m an - es behält dann die Dateibaumstruktur bei - Ich kenne das Layout der Site, die Sie scrapen, nicht, aber dies kann die Anzahl der Dateien in jedem Verzeichnis reduzieren. Majenko vor 13 Jahren 0

2 Antworten auf die Frage

1
TheCompWiz

Trotz der Durchführbarkeit des zugrunde liegenden Dateisystems sollten Sie NIEMALS so viele Dateien in einem Verzeichnis speichern. Wenn Sie nach dem Inhalt dieses Verzeichnisses suchen, werden Sie schnell feststellen, dass es eine sehr große Verzögerung gibt, während das Betriebssystem versucht, die Dateiliste zu erstellen. Das System wird dadurch erheblich belastet.

Die meisten Tools, die jegliche Art von "Web-Archivierung" durchführen, bauen normalerweise eine Verzeichnisstruktur auf, die dem Layout der Website ähnelt. Nahezu alle Websites stützen sich nicht alle auf das Stammverzeichnis, dh mydomain.com/document-1 ... sie verfügen über etwas Logistik, die alles in mehrere Pfade unterteilt (aus verschiedenen Gründen). dh Bilder gehen in mydomain.com/images und alles über Goldfisch in mydomain.com/goldfish/ etc ...

Es gibt verschiedene Tools, die diese Verzeichnisstruktur für Sie erstellen können. sogar wget bietet Optionen zum Herunterladen einer gesamten Site. Ich persönlich habe in der Vergangenheit " httrack " verwendet, und es hat ganz gut funktioniert. Wget bietet außerdem Befehlszeilenoptionen zum Herunterladen einer gesamten Site. Schauen Sie sich die Option -r (rekursiv) an. Stellen Sie einfach sicher, dass Sie Ihre Domain-Liste einrichten, damit Sie Links nicht unendlich über mehrere Sites herunterladen. Lesen Sie am besten die Wget-Man-Seite .

Hängt davon ab, was Sie zum Durchsuchen der Verzeichnisse verwenden. Jeder GUI-Client wird wahrscheinlich schlecht sein (TM), aber ich bin glücklich über Linux in einer Bash-Shell. PriceChild vor 13 Jahren 2
@PriceChild Ich würde dem zustimmen, es sei denn, es sind nicht nur GUIs ... Normalerweise gibt es Cron-Jobs, die periodisch Dinge ausführen wie "updateb" und die Verwendung von ftp / sftp / etc. Es ist erstaunlich, wie viel durch einfaches Aufteilen einer Verzeichnisstruktur eingespart werden kann. Denken Sie daran ... Ich habe in diesem Beitrag eine Menge von * sollte * (TM) verwendet. Es gibt natürlich mildernde Umstände ... aber dies ist lediglich ein Hinweis auf eine alternative Lösung. TheCompWiz vor 13 Jahren 0
irgendwelche Vorschläge, was stattdessen zu verwenden ist? Ich hätte gerne einen schnellen und einfachen Zugriff auf die Dateien von der Konsole aus (ich plane, reguläre Ausdrücke und dergleichen auszuführen) Schmerz dann. kolinko vor 13 Jahren 0
1 Wort Egrep. Fast alle * nix-Tools haben eine rekursive Option, um alle Verzeichnisse unter einem Ziel zu durchsuchen ... egrep -R some_word / some / path könnte jedes Verzeichnis nach "some_word" durchsuchen und die entsprechenden Ergebnisse zurückgeben. Schnell und einfach sind in der Regel Antonyme. Es kann schnell sein, aber es ist schwierig, mit - == OR == - einfach, aber langsam zu arbeiten. Es würde hilfreich sein, mehr darüber zu erfahren, was genau Sie erreichen wollen. Vielleicht wäre es eine bessere Option, den Inhalt in eine indizierte Datenbank zu werfen, anstatt Rohdateien zu verwenden ... TheCompWiz vor 13 Jahren 1
Du hast recht, egrep ist was ich brauche. Danke, ich werde tun, was du sagst :) kolinko vor 13 Jahren 0
-1
PriceChild

Wikipedia gibt an, dass es für HFS ein Dateilimit von 65535 gibt. Wenn Ihre Partition tatsächlich HFS ist, treffen Sie das.


Von Wikipedia:

Die Begrenzung auf 65.535 Zuordnungsblöcke führte außerdem dazu, dass Dateien eine "minimale" Größe haben, die 1 / 65.535 entspricht, der Größe der Platte. Daher kann ein beliebiges Volume unabhängig von seiner Größe nur maximal 65.535 Dateien speichern.Darüber hinaus würde jeder Datei mehr Speicherplatz zugewiesen, als sie tatsächlich benötigt, bis zur Größe des Zuweisungsblocks. Wenn die Festplatten klein waren, hatte dies wenig Konsequenz, da die Größe der einzelnen Zuweisungsblöcke unbedeutend war. Da sich die Platten jedoch der 1-GB-Marke näherten, wurde der kleinste Speicherplatz, den eine Datei beanspruchen konnte (ein einzelner Zuweisungsblock), übermäßig groß und verschwendet erhebliche Mengen an Speicherplatz. Auf einer 1-GB-Festplatte beträgt die Zuweisungsblockgröße unter HFS 16 KB, sodass selbst eine 1-Byte-Datei 16 KB Festplattenspeicher beanspruchen würde. Diese Situation war für Benutzer mit großen Dateien (z. B. Bildern, Datenbanken oder Audio) weniger problematisch, da diese größeren Dateien weniger Prozentsatz ihrer Dateigröße benötigten. Benutzer mit vielen kleinen Dateien auf der anderen Seite kann aufgrund der großen Zuweisungsblockgröße viel Speicherplatz verlieren. Dies macht die Partitionierung von Festplatten in kleinere logische Datenträger für Mac-Benutzer sehr ansprechend, da kleine Dokumente, die auf einem kleineren Datenträger gespeichert sind, viel weniger Speicherplatz beanspruchen, als wenn sie sich auf einer großen Partition befinden würden. Das gleiche Problem bestand im FAT16-Dateisystem.

Ich glaube, das hängt von der verwendeten Mac OS-Version ab. Ich denke, OS X (alle Versionen) verwenden ein neues Partitionierungssystem, das dieses Problem verringert. Joshua Nurczyk vor 13 Jahren 0
Beziehen Sie sich vielleicht auf [HFS +] (https://secure.wikimedia.org/wikipedia/en/wiki/HFS_Plus)? Das hat eine maximale Anzahl von Dateien in Millionenhöhe. PriceChild vor 13 Jahren 5
Ja, du hast mich erwischt, ich war zu faul, um nachzusehen. Das wird mich lehren. Joshua Nurczyk vor 13 Jahren 0
Ich würde * wahrscheinlich * bereit sein zu wetten, dass 50p Merlin HFS + anstelle von HFS verwendet ... :-) PriceChild vor 13 Jahren 1
Das Laufwerk ist 300 GB groß und wurde kürzlich formatiert, daher höchstwahrscheinlich HFS + :) kolinko vor 13 Jahren 3