ls로 보고된 디렉토리 크기 [중복]

ls로 보고된 디렉토리 크기 [중복]

ls보고된 크기는 실제 크기가 아니라 디렉터리 내의 inode 수에 해당한다는 것을 이해합니다 .

를 사용하여 디렉토리 크기를 표시할 때 이상한 동작을 발견했습니다 ls. 빠르게 재현하는 방법은 다음과 같습니다.

먼저 빈 디렉터리를 만듭니다. 보고된 크기 ls는 4096입니다(예상대로).

mkdir test
ll -d test/
drwx------ 2 root root 4,096  2015-Dec-29  22:22:36  test/

그 안에 10,000개의 파일을 만듭니다. 보고된 크기는 이제 167,936입니다.

touch test/{1..9999}
ll -d test/
drwx------ 2 root root 167,936  2015-Dec-29  22:23:24  test/

모든 파일을 삭제합니다. 크기를 다시 4096으로 줄여야 합니다.

rm test/*
ll -d test/
drwx------ 2 root root 167,936  2015-Dec-29  22:23:59  test/

그러나 보고된 크기는 여전히 167,936입니다.

왜?

누군가 이것을 설명할 수 있나요?

답변1

일반적으로 디렉터리 파일은 정리되지 않습니다. 해당 공간은 일반적으로 내용에 비해 충분히 작아서 이 작업을 수행하는 것은 효과적이지 않습니다(특히 다시 커질 가능성이 높기 때문에). 이 질문에 대한 권위 있는 답변을 찾는 것은 어려울 수 있습니다. 포럼 댓글에서는 다음과 같이 간단하게 설명합니다.

관련 정보