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
일반적으로 디렉터리 파일은 정리되지 않습니다. 해당 공간은 일반적으로 내용에 비해 충분히 작아서 이 작업을 수행하는 것은 효과적이지 않습니다(특히 다시 커질 가능성이 높기 때문에). 이 질문에 대한 권위 있는 답변을 찾는 것은 어려울 수 있습니다. 포럼 댓글에서는 다음과 같이 간단하게 설명합니다.
- 디렉터리 크기를 축소/재설정하시겠습니까?
- Linux 디렉터리가 자동으로 축소되지 않습니다.일부 통찰력도 제공됩니다.
- 항목을 삭제한 후에도 항목 수가 많은 디렉터리의 크기가 줄어들지 않는 이유는 무엇입니까?Linux에 대한 신뢰할 수 있는 답변 제공