
Ich habe > 100 Millionen Bilddateien (Buchcover) als flache Dateiliste in einem einzigen „Verzeichnis“:
/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...
Vor langer Zeit wurden diese auf Amazon S3 gespeichert und befinden sich jetzt auf Backblaze B2 (das S3-kompatibel ist).
Bisher hat das gut funktioniert:
- Das Speichern einer neuen Datei geht sehr schnell;
- Das Abrufen einer vorhandenen Datei geht sehr schnell.
Ich bin gerade dabei, erneut auf iDrive E2 (auch S3-kompatibel) zu migrieren.
Ich experimentiere mit dem Verschieben mitrclone, aber nachdem ich 30 Minuten auf den Start gewartet hatte rclone copy
, wurde mir klar, dass rclone erst mit der Dateiübertragung beginnt, wenn es die gesamte Dateiliste erhalten hat.
Das Problem ist:
- Ein schneller Benchmark
rclone ls
des/images/
Verzeichnisses zeigt mir, dass die Übertragung der gesamten Dateiliste fast 10 Stunden dauern würde - Bei Problemen während der Übertragung (die mehrere Tage dauern wird) wird der Vorgang von Null an neu gestartet, sodass rclone die gesamte Dateiliste erneut herunterladen muss.
- Auflisten von Dateienkostet Geldmit B2
Ich habe versucht, rclone so zu konfigurieren, dass nur ein Stapel von Dateien kopiert wird:
rclone copy "backblaze:/images/0000*"
, mit oder ohne*
, findet keine Dateirclone copy "backblaze:/images/" --include "/0000*"
scheint auch die gesamte Dateiliste herunterzuladen und nach Client zu filtern
Merkwürdigerweise scheint rclone kein Problem damit zu haben, vom Server eine Liste der Dateien abzurufen, die sich in einem bestimmten „Verzeichnis“ befinden, z. B. . /images/
Mit einem Präfix wie ist dies jedoch nicht möglich /images/0000
.
Ich dachte, dass S3 und damit auch alle S3-kompatiblen Speicher Dateipfade als flache Struktur speichern., und das /
war nur ein Charakter wie jeder andere, und man konnte leichtListen Sie Dateien mit einem beliebigen Präfix auf, mit oder ohne Endung/
.
Irre ich mich?
Ich mein nächster Speicher (E2),soll ich Dateien in Unterverzeichnissen speichern, wie images/0/0/0/0/
, images/0/0/0/1
, usw., genau wie wir es in der guten alten Zeit getan haben, als wir Dateien in einem herkömmlichen Dateisystem gespeichert haben?
Antwort1
Mir ist aufgefallen, dass rclone erst mit der Dateiübertragung beginnt, wenn es die gesamte Dateiliste erhalten hat.
Das sagt mir, dass Ihr Problem weniger bei den Speicheranbietern liegt, sondern eher bei rclone selbst. Eine Lösung, die den Listenstream startet und die Dateien dann beim Eintreffen in Blöcke aufteilt, wäre angemessener als eine Lösung, die die gesamte Dateiliste benötigt, bevor sie ausgeführt wird.
Ich dachte, dass S3 und damit auch alle S3-kompatiblen Speicher Dateipfade als flache Struktur speichern,
So macht es definitiv S3, was mein Fileserver-Admin-Gehirn kaputt gemacht hat, als ich das erste Mal damit konfrontiert wurde. Da die Probleme hier eher mit Metadaten als mit dem Dateilayout zusammenhängen, spielt das wahrscheinlich keine Rolle.