“dot”파일의 크기가“.”인 이유는 무엇입니까? 4096을 초과합니까?


10

오늘 저는 크기가 4MB 인 "빈"디렉토리를 찾았습니다.

내용이 보이지 않아서 시도했습니다 ls -lah. 이것은 나에게 숨겨진 파일 (매우 크지 않음)을 보여주었습니다. 디렉토리가 너무 큰 이유를 검색 한 결과, 도트 파일 ( .)의 크기가 3.9MB라는 것을 알았습니다.

그 파일에 무엇이 저장됩니까? 그것은 같은 디렉토리에 대한 일종의 링크가 아닙니까?

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

-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많은 파일을 사용하여 디렉토리 크기를 늘리면이 작업을 직접 수행 할 수 있습니다.

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


2
고마워, 이것은 현상을 설명하는 것 같습니다. 호기심에 대한 두 가지 질문 : 디렉토리 파일은 언제 다시 축소됩니까? 그리고 그 파일의 내용을 보여주는 방법이 있습니까?
Martin Hennings

3
(1) 참조 unix.stackexchange.com/questions/38639/…- 짧은 대답, 디렉토리를 삭제하고 다시 만드십시오.
브리스톨

2
(2) 안타깝게도 더 이상. 예전의 UNIX 버전에서는 가능했습니다.
브리스톨

e2fsck -D파일 시스템에서 실행할 수도 있지만 마운트 해제가 필요합니다.
psusi

@Bristol debugfs은 통찰력이있을 수 있습니다
Volker Siegel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.