"점" 파일의 크기가 "."에 의해 4096을 초과할 수 있는 이유는 무엇입니까?

"점" 파일의 크기가 "."에 의해 4096을 초과할 수 있는 이유는 무엇입니까?

오늘 나는 4MB 크기의 "빈" 디렉토리를 발견했습니다.

눈에 보이는 내용이 없어서 시도해 보았습니다 ls -lah. 그러면 숨겨진 파일(별로 크지는 않음)이 표시됩니다. 디렉토리가 왜 이렇게 큰지 검색해 보니 .도트 파일( )의 크기가 3.9MB인 것으로 나타났습니다.

이 파일에는 무엇이 저장되어 있나요? 이것은 동일한 디렉토리에 대한 링크가 아닌가?

다음은 쉘 출력입니다(익명).

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 ([email protected]) (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
...

답변1

모든 디렉토리와 마찬가지로 도트 파일에는 디렉토리에 있는 파일 이름 목록과 해당 inode 번호가 포함되어 있습니다. 따라서 해당 디렉터리에 많은 파일이 있는 경우("tmp" 디렉터리의 경우는 제외) 디렉터리 항목이 이 크기로 커집니다.

파일이 사라진 후 파일 시스템은 디렉터리 파일을 자동으로 다시 축소하지 않습니다.

직접 시도해 보고, 새로운 빈 디렉터리를 만들고, ls -la그 안의 초기 크기(내 컴퓨터에서는 4096)를 확인한 다음, touch많은 파일을 로드하면 디렉터리 크기가 커집니다.

(예, 여기서 많은 세부 사항을 과장하거나 부정확하게 설명하고 있다는 것을 알고 있습니다. 그러나 OP는 EXT* 파일 시스템이 작동하는 방식에 대한 완전한 설명을 요구하지 않았습니다.)

관련 정보