¿Almacenar 100 millones de archivos en el mismo "directorio" en un almacenamiento compatible con S3?

¿Almacenar 100 millones de archivos en el mismo "directorio" en un almacenamiento compatible con S3?

Tengo > 100 millones de archivos de imágenes (portadas de libros) como una lista plana de archivos en un único "directorio":

/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...

Hace mucho tiempo, estos se almacenaron en Amazon S3 y ahora están en Backblaze B2 (que es compatible con S3).

Hasta ahora, esto funcionó bien:

  • almacenar un archivo nuevo es muy rápido;
  • recuperar un archivo existente es muy rápido.

Estoy en el proceso de migrar una vez más a iDrive E2 (también compatible con S3).

Estoy experimentando moviéndolos usandoclonar, pero después de 30 minutos de espera para rclone copycomenzar, me di cuenta de que rclone no comienza a transferir archivos hasta que recibe la lista completa de archivos.

El problema es:

  • Una evaluación rápida del rclone lsdirectorio /images/me dice que transferir toda la lista de archivos llevaría casi 10 horas.
  • cualquier problema durante la transferencia (que tardará muchos días) se reiniciaría desde cero, lo que obligaría a rclone a descargar toda la lista de archivos nuevamente
  • listado de archivoscuesta dinerocon B2

Intenté configurar rclone para copiar solo un lote de archivos:

  • rclone copy "backblaze:/images/0000*", con o sin *, no encuentra ningún archivo
  • rclone copy "backblaze:/images/" --include "/0000*"parece descargar también la lista completa de archivos y filtrar en el cliente

Curiosamente, parece que rclone no tiene problemas para recuperar del servidor una lista de archivos que se encuentran en un "directorio" determinado, por ejemplo /images/, pero no puede hacer lo mismo con un prefijo, como por ejemplo /images/0000.

Pensé que S3, y por extensión todos los almacenamientos compatibles con S3, almacenaban rutas de archivos como una estructura plana., y ese /era simplemente un personaje como cualquier otro, y que fácilmente podíasenumerar archivos bajo cualquier prefijo, que terminen o no con un/.

¿Estoy equivocado?

Yo mi próximo almacenamiento (E2),¿Debo almacenar archivos en subdirectorios?, como images/0/0/0/0/, images/0/0/0/1, etc., tal como lo hacíamos en los viejos tiempos de almacenar archivos en un sistema de archivos tradicional?

Respuesta1

Me di cuenta de que rclone no comienza a transferir archivos hasta que recibe la lista completa de archivos.

Esto me dice que su problema no son tanto los proveedores de almacenamiento sino más bien la propia clonación. Una solución que iniciara el flujo de listas y luego fragmentara los archivos a medida que llegan sería más apropiada que una que necesite la lista completa de archivos antes de operar.

Pensé que S3, y por extensión todos los almacenamientos compatibles con S3, almacenaban rutas de archivos como una estructura plana,

Definitivamente así es como lo hace S3, lo que rompió mi cerebro de administrador del servidor de archivos cuando lo encontré por primera vez. Dado que los problemas aquí parecen estar relacionados con los metadatos y no con el diseño del archivo, probablemente no importe.

información relacionada