Скільки каталогів можна вкласти?


13

Мені цікаво, скільки папок можна вкласти і чому? Чи є обмеження?

Що я маю на увазі під вкладеним, це те, коли папки знаходяться в цій структурі:

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

Не так:

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

Якщо є обмеження, чи встановлюється воно операційною системою або файловою системою?

Відповіді:


20

Обмеженням буде кількість inodes на вашому розділі, оскільки каталоги, як звичайні файли, беруть Inode кожен.

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

Зауважте, що командний рядок оболонки має максимальну довжину, що може спричинити проблеми з дійсно довгими шляхами, але все одно можна буде cdпрогресивно просуватися до цільового файлу.


2
Дійсно, експеримент це те, що mkdir -pробить, і це дозволяє перевищувати MAX_PATH. Такі файли не можна відкрити своїм канонічним шляхом, але можна створити їх без проблем.
Депресія

1
Насправді це досить логічно. Відносний шлях починається від поточного робочого каталогу, inode. Вузоли не розташовані ієрархічно: немає різниці в цьому відношенні між каталогом, який пов'язаний глибоко в ієрархії імен та кореневою директорією файлової системи.
Йохан Мірен

3
@JuliePelletier API POSIX (і Linux) визначає максимальний PATH_MAX (4096 для Linux), що набагато коротше максимальної довжини командного рядка. І поки ми запускаємо запит: максимальний командний рядок насправді не є обмеженням оболонки. Ліміт накладається довжиною вектора аргументу до execveсистемного виклику, і так застосовується до будь-якої програми.
Йохан Мірен

1
@ JohanMyréen: Це хороші спостереження, але мій погляд був у тому, що він все ще буде доступний відносно, незалежно від того, наскільки глибоко він іде.
Джулі Пелтьє

2
@Arin Спробуйте df -i.
Йохан Мірен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.