Tại sao kích thước của tập tin dot dot vào tập tin. vượt quá 4096?


10

Hôm nay tôi tìm thấy một thư mục "trống" với kích thước 4MB.

Nó không có nội dung có thể nhìn thấy, vì vậy tôi đã thử ls -lah. Điều này cho tôi thấy một số tập tin ẩn (không lớn lắm). Tìm kiếm lý do tại sao thư mục quá lớn, tôi thấy rằng tệp chấm ( .) có kích thước 3,9 MB.

Điều gì được lưu trữ trong tập tin đó? Không phải đó chỉ là một loại liên kết đến cùng một thư mục sao?

Đây là đầu ra shell (ẩn danh):

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

Câu trả lời:


14

Tệp dấu chấm, giống như mọi thư mục, chứa danh sách tên của các tệp trong thư mục này và số inode của chúng. Vì vậy, nếu bạn đã từng có rất nhiều tệp trong thư mục đó (không chắc là thư mục "tmp") sẽ làm cho mục nhập thư mục phát triển đến kích thước này.

Sau khi hết các tệp, hệ thống tệp không tự động thu nhỏ tệp thư mục lại.

Bạn có thể tự mình thử nghiệm điều này bằng cách tạo một thư mục trống mới, thực hiện ls -latrong đó để xem kích thước ban đầu (4096 trên máy của tôi) sau đó nhập touchrất nhiều tệp, điều này sẽ làm cho kích thước thư mục tăng lên.

(Có, tôi biết rằng tôi đang che đậy / không chính xác về rất nhiều chi tiết ở đây. Nhưng OP đã không yêu cầu một lời giải thích đầy đủ về cách hệ thống tệp EXT * hoạt động.)


2
Cảm ơn, điều này dường như để giải thích hiện tượng. Hai câu hỏi chỉ vì tò mò: Khi nào tệp thư mục sẽ co lại? Và có cách nào để hiển thị nội dung của tập tin đó không?
Martin Hennings

3
(1) Xem thêm unix.stackexchange.com/questions/38639/ Khăn - trả lời ngắn, xóa thư mục và tạo lại nó.
Bristol

2
(2) Đáng buồn thay, không còn. Điều này từng có thể có trên các phiên bản UNIX cũ.
Bristol

Bạn cũng có thể chạy e2fsck -Dtrên hệ thống tập tin, nhưng điều đó đòi hỏi nó không được đếm.
psusi

@Bristol debugfscó thể sâu sắc
Volker Siegel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.