Ile katalogów można zagnieżdżać?


13

Jestem ciekawy, ile folderów można zagnieździć i dlaczego? Czy jest jakiś limit?

Rozumiem przez to, że foldery mają tę strukturę:

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

Nie tak jak to:

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

Jeśli istnieje limit, czy ustawia go system operacyjny, czy system plików?

Odpowiedzi:


20

Ograniczeniem będzie liczba inodes na twojej partycji, ponieważ katalogi, podobnie jak zwykłe pliki, biorą każdy i-węzeł.

Nic nie powstrzyma cię przed utworzeniem katalogu wewnątrz katalogu w innym katalogu i tak dalej, dopóki nie zabraknie inodes.

Zauważ, że linia poleceń powłoki ma maksymalną długość, co może powodować problemy z naprawdę długimi ścieżkami, ale nadal byłoby możliwe cdstopniowe przechodzenie do pliku docelowego.


2
Rzeczywiście, eksperymentalnie to właśnie mkdir -probi i pozwala przekraczać MAX_PATH. Takich plików nie można otworzyć ich kanoniczną ścieżką, ale można je tworzyć bez problemów.
DepressedDaniel

1
Właściwie to całkiem logiczne. Ścieżka względna zaczyna się od bieżącego katalogu roboczego, i-węzła. I-węzły nie są ułożone hierarchicznie: pod tym względem nie ma różnicy między katalogiem połączonym głęboko w nazwie hierachy a katalogiem głównym systemu plików.
Johan Myréen

3
@JuliePelletier Interfejs API POSIX (i Linux) określa maksymalną PATH_MAX (4096 w systemie Linux), która jest znacznie krótsza niż maksymalna długość wiersza poleceń. I podczas gdy robimy dupki: maksymalny wiersz poleceń nie jest tak naprawdę ograniczeniem powłoki. Limit jest narzucany przez długość wektora argumentu do execvewywołania systemowego, a zatem dotyczy każdego programu.
Johan Myréen,

1
@ JohanMyréen: To są dobre spostrzeżenia, ale miałem na myśli, że nadal będzie względnie dostępny, bez względu na to, jak głęboko sięga.
Julie Pelletier,

2
@Arin Try df -i.
Johan Myréen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.