¿Cuántos directorios se pueden anidar?

13

Tengo curiosidad, ¿cuántas carpetas se pueden anidar y por qué? ¿Hay un límite?

Lo que quiero decir con anidado es cuando las carpetas están en esta estructura:

folder
 |_ folder
     |_ folder
         |_ folder
             |_ ...

Así no:

folder
 |_ folder
 |_ folder
 |_ folder
 |_ ...

Si hay un límite, ¿lo establece el sistema operativo o el sistema de archivos?

Aaron Esaú
fuente

Respuestas:

20

El límite será el número de inodes en su partición ya que los directorios, como los archivos normales, toman un inodo cada uno.

Nada le impedirá crear un directorio dentro de un directorio dentro de otro directorio y así sucesivamente hasta que se quede sin inodes.

Tenga en cuenta que la línea de comando del shell tiene una longitud máxima que puede causar problemas con rutas realmente largas, pero aún sería posible cdavanzar progresivamente hacia el archivo de destino.

Julie Pelletier
fuente
2
De hecho, por experimento esto es lo que mkdir -phace y permite superar MAX_PATH. Dichos archivos no pueden abrirse por su ruta canónica, pero uno puede crearlos sin problemas.
DepressedDaniel
1
Es bastante lógico, en realidad. Una ruta relativa comienza en el directorio de trabajo actual, un inodo. Los inodos no están ordenados jerárquicamente: no hay diferencia a este respecto entre un directorio que está vinculado profundamente en la jerarquía de nombres y el directorio raíz del sistema de archivos.
Johan Myréen
3
@JuliePelletier La API POSIX (y Linux) define un PATH_MAX máximo (4096 en Linux), que es mucho más corto que la longitud máxima de la línea de comando. Y mientras estamos jugando: la línea de comando máxima no es realmente una restricción de shell. El límite es impuesto por la longitud del vector de argumento a la execvellamada al sistema, y ​​así se aplica a cualquier programa.
Johan Myréen
1
@ JohanMyréen: Esas son buenas observaciones, pero mi punto era que aún sería accesible relativamente, sin importar cuán profundo sea.
Julie Pelletier
2
@Arin Intenta df -i.
Johan Myréen