Сколько каталогов может быть вложено?


13

Мне интересно, сколько папок можно вкладывать и почему? Есть ли предел?

Под вложенными я подразумеваю, когда папки находятся в этой структуре:

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

Не так:

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

Если существует ограничение, устанавливается ли оно операционной системой или файловой системой?

Ответы:


20

Ограничением будет количество inodes в вашем разделе, так как каталоги, как и обычные файлы, принимают каждый индекс.

Ничто не помешает вам создать каталог внутри каталога внутри другого каталога и так далее, пока вы не исчерпаете inodes.

Обратите внимание, что командная строка оболочки имеет максимальную длину, которая может вызвать проблемы с очень длинными путями, но все равно будет возможно cdпостепенно перейти к целевому файлу.


2
Действительно, экспериментально это то, что mkdir -pделает и позволяет превзойти MAX_PATH. Такие файлы не могут быть открыты по их каноническому пути, но их можно создать без проблем.
ДепрессияДаниэль

1
Это довольно логично, на самом деле. Относительный путь начинается с текущего рабочего каталога, inode. Иноды не расположены иерархически: в этом отношении нет разницы между каталогом, который связан глубоко в иерархии имен, и корневым каталогом файловой системы.
Йохан Мирен

3
@JuliePelletier POSIX (и Linux) API определяет максимальный PATH_MAX (4096 в Linux), который намного короче максимальной длины командной строки. И пока мы придирчивы: максимальная командная строка - это не ограничение оболочки. Ограничение накладывается длиной вектора аргумента для execveсистемного вызова и применяется к любой программе.
Йохан Мирен

1
@ JohanMyréen: Это хорошие наблюдения, но я хотел сказать, что он все равно будет относительно доступным, независимо от того, насколько он глубок.
Джули Пеллетье

2
@ Арин Попробуй df -i.
Йохан Мирен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.