حجم الدليل لا يستحق جهودنا

هذه مقالة عديمة الفائدة تمامًا وغير ضرورية في التطبيق العملي، ولكنها مقالة صغيرة مضحكة حول الدلائل في أنظمة *nix. إنه يوم الجمعة.

أثناء المقابلات، غالبًا ما تُطرح أسئلة مملة حول "الرموز"، وكل شيء عبارة عن ملفات، والتي لا يستطيع سوى عدد قليل من الأشخاص الإجابة عليها بعقلانية. ولكن إذا بحثت بشكل أعمق قليلاً، يمكنك العثور على أشياء مثيرة للاهتمام.

لفهم التدوينة عدة نقاط:

  • كل شيء هو ملف. الدليل هو أيضًا ملف
  • يقوم inode بتخزين البيانات الوصفية من الملف، ولكن لا يتم تخزين اسم الملف هناك
  • يتم تخزين اسم الملف في بيانات الدليل
  • حجم الدليل، وهو نفس الموضح في 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 سنوات، كان هذا السلوك بالفعل ناقش في كمل. ووفقا للمطورين، فإن الإصلاح ببساطة لا يستحق كل هذا الجهد.

المصدر: www.habr.com

إضافة تعليق