Чому міг розмір файлу "крапка". " перевищують 4096?


10

Сьогодні я знайшов "порожній" каталог розміром 4 Мб.

У ньому не було видимого вмісту, тому я спробував ls -lah. Це показало мені деякі приховані файли (не дуже великі). Шукаючи причину, чому каталог був настільки великим, я виявив, що точковий файл ( .) мав розмір 3,9 Мб.

Що зберігається у цьому файлі? Це не просто своєрідне посилання на той самий каталог?

Ось вихід оболонки (анонімізований):

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007
-bash# pwd
/data/foo/bar/tmp
-bash# ls -lah
total 4.1M
drwxrwxrwx  3 nobody nobody 3.9M Nov 21 10:02 .
drwxrwxrwx 16 nobody nobody 4.0K Aug 27 17:26 ..
-rw-------  1 root   root    20K Oct 25 14:06 .bash_history
...

Відповіді:


14

Файл крапок, як і кожен каталог, містить перелік імен для файлів у цьому каталозі та їхніх номерів inode. Тож якби у вас було багато файлів у цьому каталозі (малоймовірно, для каталогу "tmp"), який би змусив запис каталогу зрости до цього розміру.

Після відсутності файлів файлова система автоматично не скорочує файл каталогу.

Ви можете експериментувати з цим самостійно, створивши новий порожній каталог, зробіть ls -laу ньому, щоб побачити початковий розмір (4096 на моїй машині), а потім touchбагато файлів, завдяки чому розмір каталогу збільшиться.

(Так, я знаю, що я переглядаю / буду неточним щодо багатьох деталей тут. Але ОП не вимагає повного пояснення того, як працюють файлові системи EXT *.)


2
Дякую, це, здається, пояснює явище. Два питання з цікавості: Коли файл каталогу знову зменшиться? І чи є спосіб показати вміст цього файлу?
Мартін Хеннінгс

3
(1) Дивіться також unix.stackexchange.com/questions/38639/… - коротка відповідь, видаліть каталог та відтворіть його.
Брістоль

2
(2) На жаль, більше немає. Це було можливо для старих версій UNIX.
Брістоль

Ви також можете запускати e2fsck -Dфайлову систему, але це вимагає відключення.
psusi

@ Брістоль debugfsможе бути проникливим
Volker Siegel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.