파일 삭제 후 디렉토리 크기를 업데이트하는 방법은 무엇입니까?

파일 삭제 후 디렉토리 크기를 업데이트하는 방법은 무엇입니까?

이는 대부분 이론적인 문제일 뿐 실제로는 실제로 사용되지 않습니다.

아시다시피 파일 이름은 디렉터리 inode에 저장됩니다. 즉, 파일이 많을수록, 파일 이름이 길수록 디렉터리가 사용하는 공간도 많아집니다.

불행하게도 디렉터리에서 파일을 삭제하면 디렉터리에서 사용하는 공간이 해제되지 않고 계속 사용 중입니다.

$ mkdir test ; cd test
# next command will take a while ; for me it was about 6 minutes
$ for ((i=1;i<103045;i++)); do touch very_long_name_to_use_more_space_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:36 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.6M Nov  9 22:39 .

파일이 삭제된 후 디렉터리에서 사용하는 공간이 업데이트되지 않는 이유는 무엇입니까? 디렉토리를 다시 만들지 않고 공간을 확보할 수 있는 방법이 있습니까?

답변1

fsck.ext4 -D마운트 해제된 파일 시스템에서 최적화된 디렉터리를 사용할 수 있습니다.

   -D     Optimize  directories  in filesystem.  This option causes e2fsck
          to try to optimize all directories, either by reindexing them if
          the  filesystem  supports directory indexing,  or by sorting and
          compressing directories for smaller directories, or for filesys‐
          tems using traditional linear directories.

ext3이 옵션은 및 에서도 유효합니다 ext2.

왜 즉석에서 이루어지지 않았는지 말할 수 없습니다. 아마도 성능 문제 때문일까요?

관련 정보