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

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

في المقابلات ، غالبًا ما تتسرب الأسئلة المملّة حول الإينودات ، كل الملفات ، والتي يمكن أن يجيب عليها القليلون بسلام. ولكن إذا قمت بحفر أعمق قليلاً ، يمكنك أن تجد أشياء غريبة.

لفهم المنشور بضع نقاط:

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

Source: https://habr.com/ru/post/ar462295/


All Articles