Це абсолютно марний, непотрібний у практичному застосуванні, але кумедний невеликий пост для директорії в *nix системах. А п'ятниця.
На співбесідах часто проскакують нудні питання про айноди, все є файли, на які мало хто може осудно відповісти. Але якщо копнути трохи глибше, можна знайти цікаві речі.
Для розуміння посту трохи тез:
- все є файл. директорія - це теж файл
- в айноді зберігаються мета-дані від файлу, але ім'я файлу там зберігається
- ім'я файлу зберігається у даних директорії
- розмір директорії, той самий що показується в ls і за замовчуванням 4Кб, залежить від кількості файлів у директорії та довжини їх імен
- Очевидно, що чим більше файлів, тим більший розмір директорії
А тепер цікаве: створюємо директорію з мільйоном файлів, перевіряємо розмір директорії, а потім витираємо всі файли та дивимося на розмір директорії.
$ mkdir niceDir && cd niceDir
# в зависимости от скорости носителя, следующая команда может занять 2-10 минут
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
Як можна помітити, розмір директорії не змінився, хоча здавалося б 🙂
Полагодити розмір директорії (без видалення) можна лише за допомогою fsck (і опції -D) у відмонтованому стані.
А от коли я пішов шукати, чому це так, то виявилося, що 10 років тому така поведінка вже
Джерело: habr.com