Verschieben einer Datei in ein Verzeichnis mit über 7000 Dateien

2863
David Murdoch

Ich bin auf einem GoDaddy-Hosting-Linux-Server ("unbegrenztes" Hosting).

Ich habe einen Ordner mit Produktbildern für einen E-Commerce-Shop, der über 7000 Bilder enthält.

GoDaddy sagte mir, dass ich nicht mehr als 1024 Dateien in einem einzigen Verzeichnis haben darf und dass ich die Ordnerstruktur neu formatieren muss. Dies ist nicht möglich, da diese Software von einem Point-of-Sale-System bei meinem Kunden verwaltet und ausgeführt wird Ziegel- und Mörtelladen.

Ich habe SSH eingegeben und die Berechtigungen für den Ordner, in den ich das Bild verschoben habe, und das Bild selbst auf 777 geändert und den folgenden Befehl ausgegeben:

mv img.gif product_images/img.gif 

und ich erhalte folgende Fehlermeldung:

mv: cannot move 'img.gif' to 'product_images/img.gif': File too large 

Die Datei ist nicht "zu groß"; es sind nur 49 bytes (es ist ein 1x1-gif)!

Wenn ich versuche, den Upload per FTP von Windows in das Verzeichnis über FTP zu ziehen, werden folgende Fehler angezeigt:

An error occurred copying a file to the FTP Server. Make sure you have permission to put files on the server.  Details: 200 TYPE is now 8-bit binary 227 Entering Passive Mode (184,168,167,92,197,60) 553-Can't open that file: File too large 553 Rename/move failure: no such file or directory 

Ich habe die Erlaubnis, Dateien auf dem Server abzulegen ... so lege ich die Datei img.gif dort an erster Stelle ab. Das Verzeichnis existiert. Ich kann lsseinen Inhalt ganz gut.

Der vorherige Support-Typ (der nicht mehr verfügbar ist) könnte dies tun - ich weiß einfach nicht wie.

Wie kann ich Dateien in dieses sehr störrische Verzeichnis verschieben? Irgendwelche Ideen?

6
Sie finden es nicht merkwürdig, dass GoDaddy Ihnen befohlen hat, Ihre Verzeichnisse neu zu strukturieren, und jetzt können Sie keine Dateien zu einem Ordner hinzufügen. Löschen Sie ~ 6500 Bilder und versuchen Sie es erneut, oder wenden Sie sich an den technischen Support von GoDaddy. Joe Internet vor 13 Jahren 1
Können Sie Dateien in ein anderes Verzeichnis oder Verzeichnis hochladen, das sich nicht in dem Verzeichnis mit den 7000-Dateien befindet? baraboom vor 13 Jahren 0
@ Joe Internet: GoDaddy Tech Support ist derjenige, mit dem ich gesprochen habe. Er sagte, sie könnten den Ordner "archivieren", damit ich die Dateien herunterladen und das Verzeichnis neu strukturieren kann. Und wie ich in der Frage festgestellt habe, ist dies keine Option; Die Software, die diese Bilder verwendet, wird von einem POS-System verwaltet und ausgeführt. David Murdoch vor 13 Jahren 0
@baraboom, ja, das funktioniert gut. Ich habe mehrere größere Bilder hochgeladen, um das zu testen. Es handelt sich also nicht um ein Problem mit dem Festplattenspeicher. : - / David Murdoch vor 13 Jahren 0

4 Antworten auf die Frage

6
baraboom

Nach dem Googlen von Godaddy 1024-Dateilimit und dem Lesen einiger Ergebnisse scheint es als beste Option zu gelten, einen neuen Host zu finden.

Abgesehen davon wäre die am wenigsten schmerzhafte Möglichkeit, das Problem zu beheben, darin, die Dateien logisch in Unterverzeichnisse zu organisieren und dann mit den Umschreibungsregeln von Apache die alten Pfade den neuen Pfaden zuzuordnen. Dadurch müssen Sie nichts an der tatsächlichen Anwendung ändern. Folgendes wäre ein Beispiel:

1) Laden Sie das Verzeichnis auf Ihren lokalen Computer herunter.

2) Organisieren Sie die Dateien in Unterverzeichnissen. Dies sollte mit nur 7000 Dateien und dem 1024-Grenzwert nicht zu schlecht sein. Sie könnten beispielsweise 36 Unterverzeichnisse erstellen, eines für jeden Buchstaben des Alphabets und eines für jede Zahl, 0-9, und dann jede Untermenge von Dateien in das entsprechende Unterverzeichnis stellen: Die Datei awhatever.gif würde in eine /, -Datei gehen Was auch immer in 1, etc. gehen würde

3) Erstellen Sie die .htaccess-Datei und bearbeiten Sie sie. Erstellen Sie eine Umschreibungsregel, mit der alle Anforderungen für product_images / awhatever.gif product_images / a / awhatever.gif zugeordnet werden.

Die .htaccess-Datei würde ungefähr so ​​aussehen:

RewriteEngine On RewriteRule ^(.)([^/]+)$ $1/$1$2 [L] 
Das ist eine erstaunliche Idee. Ich versuche es jetzt. David Murdoch vor 13 Jahren 0
4
JdeBP

GoDaddy hat dir direkt gesagt, dass es nicht erlaubt ist, was du tun möchtest. Auf den GoDaddy-Hilfeseiten erfahren Sie, dass das, was Sie tun möchten, nicht zulässig ist. Sie sagen Ihnen sogar, dass Sie diese Art von Fehlermeldungen erhalten, wenn Sie versuchen, das zu tun, was Sie nicht tun dürfen. Und hier sind Sie und fragen: "Wie kann ich das tun, obwohl ich von GoDaddy selbst nicht erfahren habe?"

GoDaddy erlaubt Ihnen dies nicht. Finden Sie jemanden, der dies tut, oder halten Sie die Grenze für 1024 Verzeichniseinträge ein.

Danke, diese Antwort ist eher ein Kommentar als eine Antwort auf die Frage. Wir erwägen, aufgrund dieser Einschränkung die Website auf einen dedizierten Server zu verschieben. Aber vorerst muss ich noch 7 weitere Bilder in diesen Ordner verschieben. David Murdoch vor 13 Jahren 0
@jdeBP, wie kamen die 7.000 Bilder überhaupt an? Moab vor 13 Jahren 0
Außerdem gibt http://help.godaddy.com./topic/306/article/4261 nicht an, dass dies nicht zulässig ist, nur dass ich möglicherweise die Fehlermeldung "Nicht genügend Speicherplatz" erhalte. Ich weiß, dass dies nur eine Technik ist, aber der Artikel besagt, dass es sich um ein "* Problem *" handelt - ein Problem, das der vorherige Support-Typ umgehen konnte. David Murdoch vor 13 Jahren 0
Wie klar können _Deine Verzeichnisse Ihres Shared-Hosting-Kontos ** bis zu 1.024 Dateien ** enthalten, damit Sie nicht mehr zu argumentieren versuchen, GoDaddy sagt Ihnen nicht, was es Ihnen eindeutig sagt, sowohl auf seiner WWW-Site als auch auf als du mit ihm geredet hast Die Leute, die die Server betreiben, haben Ihnen gesagt, was sie nicht zulassen. Hören Sie auf zu denken, dass, wenn Sie nur ein wenig mehr argumentieren und die Welt nur noch einmal gefragt haben, sich die Antwort magisch ändern wird. Sie erklären, dass Sie das Unmögliche brauchen und nichts anderes akzeptieren werden. JdeBP vor 13 Jahren 0
Nach einigen Nachforschungen sieht es so aus, als ob ihre Durchsetzung manuell und nicht automatisch erfolgt. Möglicherweise haben sie dieses Limit in letzter Zeit manuell durchgesetzt, weshalb der vorherige Support-Mitarbeiter keine Probleme hatte. Sieht so aus, als würden Sie am besten einen neuen Gastgeber finden! baraboom vor 13 Jahren 0
@ JdeBP, viel mürrisch? Tatsache ist, dass sich in diesem Verzeichnis mehr als 1024 Dateien befinden. "* kann bis zu 1.024 Dateien * enthalten" ist also nicht im geringsten wahr, oder? Der vorherige Support-Typ hat dies oft getan. Ich weiß also, dass es möglich war / war ("war" laut @ baraboom's Forschung). David Murdoch vor 13 Jahren 0
Moab, eine Möglichkeit, die Akten dort zu bekommen, ist die gleiche Art und Weise, wie sie für die Leute dorthin gelangten, die das vor einigen Jahren geschlagen hatten: Sie waren bereits vor der Einschränkung vorhanden. Beachten Sie auch, dass GoDaddy ziemlich eindeutig erklärt, dass es Dinge tun kann und tun wird, z. B. das Speichern von Personen, die die Grenzwerte überschreiten, neu zu hosten (oder völlig auszulöschen). Es ist also plausibel, dass dies ein Grenzwert ist, bei dessen Überschreitung ein Switch als ausgelöst wird es war. JdeBP vor 13 Jahren 0
@baraboom Danke! Kannst du mich auf einige der Forschungen verweisen und / oder deine eigene Antwort eröffnen? David Murdoch vor 13 Jahren 0
@JseBP, das ist sehr plausibel. Vielen Dank. David Murdoch vor 13 Jahren 0
M. Murdoch, während Sie dumm damit beschäftigt sind, Emotionen aus dem Zero-Beweis hervorzurufen, läuft die Uhr auf Ihrem Kunden. Sie haben ganz eindeutig gesagt, was Sie nicht tun können. Sie können mit diesen dummen Argumenten fortfahren, dass Schwarz weiß ist, oder Sie können tun, was Ihr Hosting-Unternehmen eindeutig gesagt hat, dass Sie es tun müssen, damit das Unternehmen es nicht für Sie tut. Der Serienbrief dafür lautet: "Wenn dies nicht abgeschlossen ist, müssen wir die Verzeichnisse in Ihrem Namen einhalten." Wählen Sie also: mehr Schwarz ist ein weißes Argument oder das Speichern des GoDaddy-Kontos Ihres Kunden? JdeBP vor 13 Jahren 0
@JdeBP, können wir chatten: http://chat.stackexchange.com/rooms/542/discussion-on-su-question-294535 David Murdoch vor 13 Jahren 0
1
Stefan Kendall

Umgehen Sie das Problem, indem Sie ein CSS-Sprite-Sheet für die Produktbilder erstellen. Sie reduzieren die Anzahl Ihrer Dateien exponentiell.

Gute Idee, aber es gibt über 11.000 aktive Produkte in der POS-Datenbank (und nicht alle haben Bilder). Das Problem wird also immer noch nicht umgangen. David Murdoch vor 13 Jahren 1
1
rob

Es kann einen Trick geben, den Sie ausprobieren können, wenn GoDaddy Hardlinks zulässt :

ln img.gif product_images/img.gif 

Wenn die Fehlermeldung irreführend ist (und es handelt sich tatsächlich um einen Fehler "zu viele Dateien" und nicht um "zu viel Speicherplatz"), funktioniert dies wahrscheinlich immer noch nicht. Wenn dies gelingt, haben Sie identische img.gif-Dateien in Ihrem ursprünglichen Verzeichnis und in Ihrem Unterverzeichnis. Die Dateizeiger verweisen jedoch auf dieselbe physische Datei, sodass kein zusätzlicher Speicherplatz (außer dem Zeiger) verwendet wird.

Wenn alles gut geht, können Sie die Originaldatei sicher löschen, und die Datei im Unterverzeichnis bleibt erhalten:

rm img.gif 

Wenn alles andere fehlschlägt, laden Sie alle Dateien erneut herunter (Hinweis: tar + gz, damit sie schneller heruntergeladen werden können), löschen Sie sie von der Website, ordnen Sie sie neu an (mehr dazu unten) und laden Sie sie dann erneut hoch.

Das Wurzelproblem lösen

Eine gängige Lösung ist das Erstellen von Unterverzeichnisstrukturen für die ersten Zeichen des Dateinamens. Zum Beispiel:

images / widget001.png -> images / w / i / widget001.png

Sie können dann eine .htaccess- RewriteRule schreiben, damit Ihre Web-App nicht beschädigt wird . Es wird zwar immer noch versucht, das Bild aus images / widget001.png herunterzuladen, aber die URL-Umschreibungs-Engine wird stattdessen images / w / i / widget001.png bereitstellen.

Sie können jedoch viele Ebenen von Unterverzeichnissen erstellen, die Sie benötigen, um die Anzahl der Dateien pro Verzeichnis abzurufen. Dies funktioniert besonders gut, wenn die Dateien zufällig generierte Namen haben. Wenn alle Namen ähnlich sind (z. B. stimmen alle mit dem Format "img #####. Png" überein), können Sie Ihre Verzeichnisstruktur basierend auf einem anderen Teil des Namens erstellen, anstatt die ersten Buchstaben zu verwenden.

HINWEIS: Sie sollten den vollständigen Dateinamen für eine spätere Wartung beibehalten, anstatt ihn im vorherigen Beispiel in images / w / i / dget001.png umzubenennen. Ein Grund ist, dass es viel einfacher ist, die Verzeichnisstruktur zu reduzieren und neu zu erstellen, wenn Sie feststellen, dass Sie die Verzeichnisstruktur später noch einmal vertiefen müssen.

BEARBEITEN : +1 an Baraboom, der auch das Unterverzeichnis und die URL-Umschreibung erwähnte, während ich meine Antwort schrieb. :)