Ankündigung

Einklappen
Keine Ankündigung bisher.

Dateien speichern auf dem Webserver

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dateien speichern auf dem Webserver

    Hallo, kann mir jemand im Internet ein paar Links zeigen wo erklärt wird, wie viele kleine ca. 1MB Dateien (Dateienanzahl ab 1 000 000 und mehr) richtig gespeichert werden soll? Wie sich Dateien automatisch über mehrere Verzeichnise verteilen lassen. Am besten mit Beispielen
    Ich kann leider nichts finden. Suchbegriffe sind auch OK! Ich finde immer LInks wie ich Daten sichern kann BackUP usw.

  • #2
    Verzeichnisse wäre z.b. schon ein ansatz. ich hab das immer so gehandhabt, dass ich je 2 Hashwerte also der 1 und 2 position aus den md5_file() der datei als Verzeichnisse angelegt habe. 1. hat man dadurch eine gleichverteilung, 2. lassen sich die werte schnell abbilden oder erreichnen, falls erforderlich. ab der 1. Tiefe hat man 256 mögliche Verzeichnisse und ab der 2. Verschachtelung ( hash pos 3 und 4 ) hat man schon 65536 variationen was ca. 15-16 Dateien pro Verzeichnissen entspricht.
    bitcoin.de <- Meine Freelancerwährung

    Kommentar


    • #3
      Zum Beispiel: Ich habe mit SHA-1: 72D92649AAB52A51320201DB927E93FC98A36C93.jpg eine Dateiname erstellt. Erste vier Zeichen von diesen Dateinamen muss ich zwei in Verzeichnise umwandeln: 72 / D9 / restliche Datei mit folgenden Namen 2649AAB52A51320201DB927E93FC98A36C93.jpg einfach speichern? Je größer ist die Verzeichnistiefe, desto mehr kann ich Dateien speichern?

      Kommentar


      • #4
        Dateiname kannste lassen wie er ist. das wäre je bescheuert die namen zu verändern. Dein Hash ist auch vollkommen übertrieben. Teil von MD5 reicht schon. Ich hab auch nicht geschrieben, dass du die datei umbenennen sollst.
        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #5
          Vielen Dank! Aber ich habe noch eine Frage wenn ich die Verzeichnisse erstellt habe 16*16*16 = 4096 Verzeichnisse insgesamt.
          Wie kann ich diese Verzeichnisse gleichmäßig mit Dateien füllen?

          Kommentar


          • #6
            Wenn deine Hash-Funktion entsprechend streut, sollten die Hashes gleichmäßig verteilt sein, dann ist das von selbst erledigt.

            Kommentar


            • #7
              Ist dieser Beispiel richtig?

              Datei: 27c36e650f63a42a51aa6dc08a56ec5f.jpg

              Erzeugt Verzeichnisse in Verzeichnis bilder/

              2/7/....jpg

              wird gespeichert in Verzeichnis.

              bilder/2/7/27c36e650f63a42a51aa6dc08a56ec5f.jpg

              Und wie werden Bilder in Verzeichnis (welche Dateinamen?)

              bilder/2/.....jpg

              gespeichert?









              Kommentar


              • #8
                Das kannst du ja im Grunde entscheiden, je nach dem wie du später wieder auf die Bilder zugreifen willst.
                Also ob du z.B. nur den Hash oder auch den Dateinamen in einer DB abspeichern willst.
                sorry, shift-taste kaputt

                Kommentar


                • #9
                  Ich möchte URL-Pfade mit Dateinamen in Datenbank speichern. Die Dateien werden auf Dateisystem gespeichert bleiben. Ich verstehe nur nicht, wie die Dateien in oberen Verzeichnis gespeichert werden sollten.

                  Mit oberen Verzeichnis meine ich

                  Aus Beispiel oben

                  bilder/2/ <- obere Verzeichnis

                  bilder/2/7/ <- /7/ ist unter Verzeichnis.

                  Weil in Unterverzeichnis kann ich sofort Dateien speichern nach dem mit md5 Hash erzeugt wurde.
                  Ich möchte doch auch obere Verzeichnis füllen.

                  Kommentar


                  • #10
                    warum willst du mehrere verzeichnisebenen befüllen?
                    warum willst du die dateien als hash, statt der normalen dateinamen verwenden?
                    bitcoin.de <- Meine Freelancerwährung

                    Kommentar


                    • #11
                      Ich möchte alle Ebenen gleich füllen. Dateinamen werden später mit (unique) geändert.

                      Kommentar


                      • #12
                        Du hast weder meine Fragen verstanden noch beantwortet. Naja, es ist deine Sache. Auf der Grundlage kann ich dir absolut nicht weiter helfen. Dein Quatsch mit dem nachträglichen unique ist auch vollkommen ohne Sinn.
                        bitcoin.de <- Meine Freelancerwährung

                        Kommentar


                        • #13
                          Zitat von User0101 Beitrag anzeigen
                          Ich möchte alle Ebenen gleich füllen. Dateinamen werden später mit (unique) geändert.
                          Wieso, das bringt doch eher Nachteile.
                          Beispiel ext4:
                          Maximum number of files per directory: unlimited
                          Falls Du es für unersätzllich hältst die Verzeichnisse auf verschiedene Filesysteme zu verteilen da Dir die Grenze zu niedrig ist:
                          Maximum number of files: 232 - 1 (4,294,967,295)
                          kannst Du auch ein Filesystem nutzen, welches mehr Dateien erlaubt wie JFS.

                          Kommentar


                          • #14
                            Nein, Limit bei Ext4 liegt bei 64000 Unterverzeichnissen doppelt so viel wie bei Ext3. Hier zum nachlesen: https://ext4.wiki.kernel.org/index.php/Ext4_Howto

                            Right now the maximum possible number of sub directories contained in a single directory in Ext3 is 32000. Ext4 doubles that limit and allows 64000 sub directories.
                            Ich kann nicht mehr als 64000 Verzeichnisse mit Ext4 erstellen.

                            Wie verstanden habe ist Dateianzahl pro Verzeichnis unlimitiert. Verzeichnisse haben immer noch einen Limit.

                            65536 Verzeichnisse (Variationen) sind nicht möglich wie Alpha geschrieben hat, maximal 64000.

                            Bitte korrigieren Sie mich wenn ich falsch verstanden habe.

                            Hier noch ein Beispiel:

                            Ich habe eine Datei bild.jpg

                            diese Datei erzeugt md5 Hash

                            bb21a2f11b3957f442f721fd6a9bcbd7.jpg

                            Diese Datei soll nach Beispiel von Alpha in Verzeichnis

                            bb / 2 / bild.jpg

                            gespeichert werden.

                            256*16=4096

                            Mein Script prüft ob Verzeichnis bb/ existiert.
                            Wenn Ja prüfe ob Verzeichnis 2/ existiert.

                            Wenn beide Verzeichnisse bereits vorhanden sind speichere meine Datei in dieser Verzeichnis: bb/2/bild.jpg

                            Wenn nein lege Verzeichnis mit Namen /bb/ und /2/ an und speichere dort meine Datei.

                            Bei nächsten Datei

                            bild_2.jpg

                            wird überprüft ob die ersten drei Zeichen von md5-Hash bb2 sind

                            Wenn ja, speichere die Datei in gleichen Verzeichnis: bb/2/bild_2.jpg

                            Wenn md5-Hash anders ist z.B 194428c2f378432b31d5f0deda3cb6dc.jpg prüfe ob Verzeichnis 19/ existiert wenn nein erzeuge dieses Verzeichnis mit Verzeichnis 4 und speichere Bild_2.jpg in : 19/4/bild_2.jpg

                            Wenn Verzeichnis 19/ gefunden wurde prüfe ob Verzeichnis 4/ existiert, wenn ja speichere dort mein Bild wenn nein lege die Verzeichnis 4/ an und speichere das Bild 19/4/bild_2.jpg


                            Ist diese Herangehensweise richtig???

                            Kommentar


                            • #15
                              Woran liegt der Vorteil bei Deiner Methode ?
                              Wenn Verzeichnis 19/ gefunden wurde prüfe ob Verzeichnis 4/ existiert, wenn ja speichere dort mein Bild wenn nein lege die Verzeichnis 4/ an und speichere das Bild 19/4/bild_2.jpg
                              VS

                              Ich speichere eine datei.

                              Kommentar

                              Lädt...
                              X