Archivar un montón de archivos de la forma más rápida posible

Archivar un montón de archivos de la forma más rápida posible

Estoy implementando un sistema de archivo y descarga de torrents. Quiero descargar un archivo torrent (que contiene varios archivos pequeños) y luego archivarlo. El rendimiento de mi disco es deficiente. entonces quiero una forma eficiente de archivar archivos.

Tengo varias opciones:

1.Descargue archivos en un disco/sistema de archivos normal y luego TAR con tarel comando normal de Unix.

2.Cree un archivo TAR en blanco y luego móntelo en modo de escritura usando archivemounty luego comience a descargar torrent en la ruta montada.

3.Similar a la opción2pero usando un archivo ZIP en lugar de tar.

4.Como quiero entregar archivos a través de un navegador web: implemente un software/script para TAR una carpeta sobre la marcha. (Escribí un script en Python (uWsgi/Nginx) hace años para hacer esto. Pero como tar requiere una suma de verificación para cada archivo. El rendimiento fue bastante pobre)

5.Busque un cliente de torrent que pueda escribir directamente en un archivo TAR/Zip. (Muy improbable)

¿Qué camino debo considerar?

Gracias.

Respuesta1

En realidad, es probable que lo mejor para el rendimiento sea 4, si el disco es realmente su verdadero cuello de botella. Esto evita que tenga que gastar valiosos IOPS en copiar archivos de un lugar a otro.

Además, la opción 4 es realmente la única opción que permitirá al cliente descargar instantáneamente el torrent una vez que su servidor haya terminado de descargar, lo que significa que el cliente podrá acceder a sus datos antes. Además, de esta manera tiene la opción de permitir fácilmente al usuario descargar archivos individuales (muy simple ya que simplemente están ahí en su sistema de archivos).

Investigaría por qué tar te estaba dando un rendimiento tan pobre. Realmente dudo que sean las sumas de verificación el problema, ya que, hasta donde puedo recordar, ni siquiera están en los datos. ¿Alguna razón por la que no puedes simplemente canalizar la salida de GNU tar directamente al navegador web en lugar de escribir tu propio empaquetador de tar?

Un desafío sería proporcionar una longitud de contenido correcta al cliente con este enfoque. Si eso no le importa, puede omitir el envío de esto y entonces su cliente simplemente no verá un contador de porcentaje para la descarga. Es posible que esto no importe dependiendo de su aplicación.

información relacionada