¿Es un problema para crear un directorio para cada archivo de carga, en una aplicación web en Linux / Unix?

StackOverflow https://stackoverflow.com/questions/1503356

Pregunta

Estoy haciendo de carga de archivos de una aplicación web (que se ejecuta en Unix / Linux). Me pregunto si no sería un problema si había planeado para crear un nuevo directorio para cada carga de archivos? Este es el enfoque fuera de la caja para el rubí en los carriles plug-in "clip". Me debatiendo lo que las compensaciones son, o si quizás no es sólo una preocupación, si el despliegue en un entorno Linux / Unix.

Las opciones parecen ser:

  1. una carpeta por cada archivo adjunto - por la forma de clip parece funcionar fuera de la caja
  2. Una carpeta por usuario tal vez (es decir, si el servicio web tiene varios usuarios con su propia cuenta) - y entonces uno tendría que añadir un poco de singularidad al nombre de archivo (tal vez el modelo ID)
  3. Poner todos los archivos adjuntos en una carpeta - pero esto es probablemente va demasiado lejos hacia otro lado

Pregunta - ¿Debo estar preocupado por ser creado el número de directorios? Es esto un problema para un O / S si el servicio fue muy popular? Algún consejo para una página web que permitía a los usuarios con su propia cuenta separada para subir archivos, lo que podría ser una buena estructura con respecto a su almacenamiento? (Creo que he descartado la idea de almacenar archivos en MySQL.)

Gracias

¿Fue útil?

Solución

Suponiendo Ext3 unidad formateada en Linux (la más común).

A partir de ( http://en.wikipedia.org/wiki/Ext3 )

"Hay un límite de 31998 subdirectorios por un directorio, se derivan de su límite de 32000 enlaces por nodo-i. [13]"

Por lo tanto, si usted va a golpear el límite de 32k archivos, que no es tan alta, su aplicación fallará.

Otros consejos

No como tal, sino que tiene tropecientos millones de carpetas en un directorio (o el mismo para los archivos) no se recomienda (que es un verdadero golpe a la velocidad).

Motivo: cadenas de estilo c

Una buena solución sería la de almacenar cosas hierchially algo así como (sic?): / Ruta / a / / / mes / archivo usernamefirstletter / nombre de usuario años

Si tiene una partición separada para el directorio en el que los nuevos archivos / directorios se crean, yo diría que no es un problema. Se puede conseguir un problema si sólo tiene que utilizar otra partición ya que se puede ejecutar sin inodos y / o espacio libre en disco que puede ser malo.

El uso de una partición separada sería (en caso de un ataque DoS) sólo para detener la aplicación funcione correctamente y el sistema no va a salir lastimado de ninguna manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top