이 빈 디렉터리가 왜 3.5MB인가요?

이 빈 디렉터리가 왜 3.5MB인가요?

방금 이 질문을 읽었습니다."ls -l" 명령의 출력에서 ​​디렉토리 크기는 무엇을 의미합니까?

...그건 내 질문에 대한 대답이 아닙니다. 기본적으로 파일을 NAS로 옮겼습니다. 내가 옮긴 폴더는 완전히 비어 있고 숨김 파일도 없지만 du크기가 3.5MB로 보고됩니다. 물론, 여기에는 긴 파일 이름을 가진 많은 수의 파일이 포함되어 있었습니다.

이 크기는 단순히 해당 디렉터리에 있는 파일의 수와 이름 길이 때문입니까? 폴더가 비어 있는데(ext4 파일 시스템) 크기가 줄어들지 않는 이유는 무엇입니까?

답변1

디렉터리의 모든 파일을 삭제해도 디렉터리 크기는 대부분의 파일 시스템에서 동일하게 유지됩니다.

디렉토리가 비어 있는 경우,

rmdir ./directory_name; mkdir ./directory

생성된 새 디렉터리는 더 작아집니다. 하지만 파일이 추가되면 크기가 커집니다. 단일 디렉토리에 있는 파일 수만큼 디렉토리 파일 크기에 대해 걱정하지 마십시오. 단일 디렉터리에 많은 수의 파일이 있으면 파일 조회 성능에 부정적인 영향을 미칠 수 있습니다. inode 캐시가 충분한 경우에도 마찬가지입니다.

답변2

Solaris에서는 디렉토리의 파일 수가 성능에 영향을 미치기 전에 ufs에 영향을 미칩니다. 나는 여러 시스템에서 디렉토리에 수백 또는 수천 개의 작은 파일이 포함되어 있다는 것을 발견했습니다. 디렉터리의 크기는 그다지 크지 않지만 파일 수가 너무 많아 디렉터리에서 어떠한 작업도 수행할 수 없습니다. rm * 파일만 사용하면 시스템이 잠길 수 있으므로 사용할 수 없습니다. 내가 찾은 유일한 방법은 목록(ls the-directory >> file.list)을 생성한 다음 짧은 한 줄의 완료 스크립트를 생성하고 하나씩 삭제하는 것입니다. 시간이 오래 걸리지만 시스템을 잠그지 않고 제거할 수 있는 유일한 방법입니다. 디렉토리가 비어 있어도 여전히 필요한 경우 나열된 블록 크기가 그 안의 내용과 일치하도록 디렉토리를 삭제하고 다시 생성하십시오. 나중에 이것이 일종의 시스템 관리 디렉토리(예: /var)인 경우 이를 정리하고 관리 가능한 수의 파일로 유지하는 일일 크론 작업이 있습니다.

관련 정보