Kataloglarning o'lchami bizning harakatlarimizga arzimaydi

Bu mutlaqo foydasiz, amaliy qo'llashda keraksiz, lekin *nix tizimlaridagi kataloglar haqida kulgili kichik post. Bugun juma.

Suhbat davomida ko'pincha inodelar, hamma narsa fayllar haqida zerikarli savollar tug'iladi, ularga kam odam aql bilan javob bera oladi. Ammo agar siz biroz chuqurroq qazsangiz, qiziqarli narsalarni topishingiz mumkin.

Xabarni tushunish uchun bir nechta fikrlar:

  • hammasi fayl. katalog ham fayldir
  • inode fayldagi metama'lumotlarni saqlaydi, lekin fayl nomi u erda saqlanmaydi
  • fayl nomi katalog ma'lumotlarida saqlanadi
  • Katalogning o'lchami, ls da ko'rsatilgan va sukut bo'yicha 4Kb bo'lgan katalogdagi fayllar soniga va ularning nomlarining uzunligiga bog'liq.
  • Shubhasiz, qancha ko'p fayl bo'lsa, katalog hajmi shunchalik katta bo'ladi

Endi qiziqarli qism: biz million fayl bilan katalog yaratamiz, katalog hajmini tekshiramiz va keyin barcha fayllarni o'chirib tashlaymiz va katalog hajmiga qaraymiz.

$ 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 .

Ko'rib turganingizdek, katalog hajmi o'zgarmagan bo'lsa-da :)

Katalog hajmini (uni o'chirmasdan) faqat o'chirilgan holatda fsck (va -D varianti) yordamida tuzatishingiz mumkin.

Ammo men nima uchun bunday bo'lganini qidirganimda, 10 yil oldin bunday xatti-harakatlar allaqachon sodir bo'lganligi ma'lum bo'ldi muhokama qilindi lkml ichida. Va ishlab chiquvchilarning fikriga ko'ra, tuzatish shunchaki kuch sarflashga arzimaydi.

Manba: www.habr.com

a Izoh qo'shish