13 votos

¿Cuántos archivos en una carpeta son demasiados?

Hace muchos años recuerdo vagamente que el Finder de Mac OS X empezaba a tener problemas si una carpeta contenía 2.000 - 3.000 elementos o más.

Documento de Apple dice que el HFS Plus El sistema de archivos tiene un límite teórico de 2.000 millones de archivos por carpeta en todas las versiones de Mac OS X.

¿Cuál es el límite práctico?

¿Será un problema tener 10.000 fotos en una carpeta?

2 votos

En la 10.6, que todavía utilizo en el trabajo, el problema de los 2000-3000 sigue existiendo. No he tenido la oportunidad de utilizar este tipo de masa de archivos en versiones posteriores. Pero sospecho que si los documentos siguen diciendo lo mismo, entonces el mismo límite puede ser un problema. Debo añadir que nunca tengo el problema de 2000-3000 en la unidad local. Pero sólo a través de una unidad de red.

1 votos

No sé exactamente dónde está el límite, pero millones de archivos definitivamente te pondrán en un problema muy grande (buena suerte borrando una carpeta así incluso con rm -rf ).

0 votos

En las primeras versiones de MacOS X 10.6, al menos, se experimentaban problemas de rendimiento cuando se colocaba una cantidad "grande", de 2k a 3k, de archivos en la carpeta del escritorio. Algo relacionado con el dibujo de todos los iconos en el escritorio. No he oído hablar de un problema con otras carpetas.

8voto

Puede probarlo usted mismo ejecutando lo siguiente en el Terminal

mkdir ~/t
cd ~/t
dd if=/dev/random of=test bs=1024 count=16
for i in {1..10000}; do cp test test.$i; done

para crear una carpeta que contenga 10'000 archivos de 16kB cada uno (sustituya el 16 de la tercera línea por otro número para archivos de distinto tamaño).

2 votos

Una advertencia tardía: Haga no hágalo dentro de su directorio personal, a menos que quiera aumentar su fama con el administrador local del sistema. Dependiendo de la herramienta de copia de seguridad de su elección, puede que no le gusten los efectos de su herramienta tratando de archivar tu precioso experimento. Es mejor restringir los experimentos de este tipo a medios que no formen parte de un plan de copias de seguridad. /tmp sería una mejor opción que ~/ .

0 votos

@TatjanaHeuser No sé de dónde viene tu interés en este tema, pero en MacOS un usuario típicamente es la administración local (aunque no sea consciente de ello) y /tmp es un enlace simbólico a /private/tmp que por defecto reside en la partición principal (única).

0 votos

Es cierto para los Macs de escritorio - y no cambia el problema de las copias de seguridad. Incluso en MacOS, /tmp se borra entre los reinicios. (A diferencia de /var/tmp ). #alt.follkore.computers aparte: he conocido administradores que han maldecido al usuario curioso que ha creado un pequeño archivo con un gran agujero para dar lseek un intento cuando el número de cintas para su copia de seguridad superó con creces la capacidad del sistema de archivos que se estaba respaldando...

5voto

Rafael Santos Puntos 141

Respondiendo considerando un ejemplo práctico: Tengo ahora 326.000 archivos en una carpeta, creados por una aplicación que descarga bits de un servidor. Los archivos son archivos XML comprimidos, y mi aplicación extrae datos XML de ellos y los almacena en una base de datos local.

La aplicación se ejecuta desde la línea de comandos. Todo funciona bien sin ningún problema pero rm * o ls * no funciona debido a la expansión del comodín (mensaje de error Argument list too long ). Como los archivos se almacenan en una carpeta temporal, puedo eliminar la carpeta después de procesar los archivos.

Sin embargo, no he intentado abrir la carpeta con el Finder. Sospecho que eso podría ser muy lento, si es que es posible.

2 votos

El mismo caso de uso aquí: descargué más de 290.000 archivos en un directorio de un sitio que estaba archivando... y cometí el error de intentar abrirlo en el Finder. Después de dejarlo girar durante unos 20 minutos forcé el reinicio del Finder, luego cerré esa carpeta e hice todo lo demás en la Terminal (un montón de find | xargs !)

5voto

Jared Palmer Puntos 46

Parece que alrededor de 10.000 es seguro. Sin embargo, he descubierto que si vas mucho más allá, como 50.000, Finder nunca listará los archivos en el directorio cuando intentes navegar por él. Sospecho que esta es la razón por la que un montón de software de recuperación de datos creará una nueva carpeta cada 10.000 archivos si usted está haciendo el tallado de archivos en RAW.

4voto

Robert Nasiadek Puntos 11

Hay que tener en cuenta varios límites que se han tocado en algunos comentarios:

  • longitud del argumento y la expansión de la cáscara - un simple echo * se salta si la longitud concatenada de los nombres de archivo a los que se expande el asterisco alcanza ese límite. Si se encuentra con esta trampa, a menudo find será tu amigo. find . -depth 1 -type f | exec echo {} \; sería un sustituto de trabajo para el inocente echo * mencionada anteriormente, limitada a los archivos de la lista. ( echo para ser sustituido por la acción de su elección)

  • Límites por programa al tamaño de las estructuras de datos internas utilizadas para mantener el contenido de los directorios (finder, todo tipo de herramientas que intentan leer los listados de directorios).

  • tamaño de la caché de búsqueda de directorios. Mientras que el sistema de archivos puede ser able para albergar 2.100 millones de archivos dentro de la estructura en disco de un directorio, no será agradable trabajar con ese número, y sería conveniente introducir alguna estrategia de clasificación de archivos en subdirectorios si se trata de estructuras de ese tamaño. (Sugerencia: las personas que diseñan las estructuras de caché de la web tuvieron que lidiar con eso - ver Maltzahn/Richardson, Reducing the Disk I/O of Web Proxy Server Caches, Usenix 1999 .

Para acelerar el acceso a las estructuras de disco de uso frecuente, los sistemas de archivos utilizan cachés (de memoria), y el tamaño de estos cachés es limitado. Aquí es donde comienza la repentina penalización por directorios estructurados grandes y menos que óptimos. Dependiendo de la frecuencia e intensidad del acceso a estos directorios, la penalización puede ser significativa.

El artículo de 2015 de Tsai et al., Cómo obtener más valor de su caché de directorio del sistema de archivos sería probablemente una de las introducciones más fáciles al tema.

2voto

konqui Puntos 531

Apple tiene un documento de apoyo relacionado con eso:

Número máximo de archivos (o archivos y carpetas) en una carpeta (todas las versiones de Mac OS X)

Hasta 2.100 millones (2)

0 votos

Sí, efectivamente, incluí ese enlace y dato en mi pregunta (2º párrafo). Estoy preguntando sobre la práctica mundo real límites.

2 votos

Gracias por esto, me he reído mucho. Prueba a tener 4M de archivos en una sola carpeta y dime cómo va (pista - no se puede ver, no se puede ls No puedo find no se puede borrar, etc.).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X