Ini benar-benar tidak berguna, tidak diperlukan dalam aplikasi praktis, tetapi postingan kecil yang lucu tentang direktori di sistem *nix. Ini hari Jumat.
Selama wawancara, pertanyaan membosankan sering muncul tentang inode, semuanya adalah file, yang hanya sedikit orang yang bisa menjawabnya dengan wajar. Namun jika digali lebih dalam, Anda bisa menemukan hal-hal menarik.
Untuk memahami postingan tersebut, beberapa poin:
- semuanya adalah file. direktori juga merupakan file
- inode menyimpan metadata dari file, tetapi nama file tidak disimpan di sana
- nama file disimpan dalam data direktori
- Ukuran direktori, sama dengan yang ditampilkan di ls dan 4Kb secara default, bergantung pada jumlah file dalam direktori dan panjang namanya
- Jelasnya, semakin banyak file, semakin besar ukuran direktorinya
Dan sekarang yang menarik: kita membuat direktori dengan sejuta file, memeriksa ukuran direktori, lalu menghapus semua file dan melihat ukuran direktori.
$ 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 .
Seperti yang Anda lihat, ukuran direktori tidak berubah, meskipun tampaknya :)
Anda hanya dapat memperbaiki ukuran direktori (tanpa menghapusnya) menggunakan fsck (dan opsi -D) dalam keadaan tidak terpasang.
Namun ketika saya mencari tahu kenapa bisa demikian, ternyata 10 tahun yang lalu perilaku tersebut sudah terjadi
Sumber: www.habr.com