나는 수년 동안 나를 괴롭혀온 가장 수수께끼 같은 질문이 있습니다. ls -l과 du -sh *에 지정된 파일 크기의 차이점은 무엇입니까?
GRILL:/user/MAIL/DATA>ll
total 270
drwxr-xr-x 11 user users 1024 Mar 21 2013 .
drwxr-xr-x 6 user users 96 May 28 2008 ..
drwxr-xr-x 10 user users 1024 Jun 14 09:40 Rod
drwxr-xr-x 3 user users 96 Sep 17 2010 Atlas
drwxr-xr-x 2339 user users 132096 Jun 14 15:00 Admin
drwxr-xr-x 3 user users 96 Jul 11 2014 DE
drwxr-xr-x 5 user users 96 Jun 14 08:30 Express
drwxr-xr-x 3 user users 96 Sep 17 2010 Deferred
drwxr-xr-x 2 user users 96 Feb 10 2009 Imagi
drwxr-xr-x 6 user users 1024 Jul 11 2014 NO
drwxr-xr-x 3 user users 2048 Mar 21 2013 SE
-rw-r--r-- 1 user users 55 Mar 21 2013 cmd
GRILL:/user/MAIL/DATA>du -sk *
6723 Rod
0 Atlas
435494 Admin
2 DE
111273 Express
2 Deferred
0 Imagi
541 NO
12 SE
1 cmd
Admin의 크기 ls -l
는 입니다 132096
. Admin 디렉터리에서 400,000개 이상의 파일을 삭제하려고 시도했지만 공간이 약간 줄어든 것을 발견하지 못했습니다.
그리고 du -sk
주어진 크기는 435494
. 파일의 원래 크기는 무엇이며 그 차이점은 무엇입니까? 누군가 이것에 대해 자세히 설명해 주시겠습니까?
답변1
파일의 경우 무엇보다도 ls -l file
크기를 바이트 단위로 표시하고 디스크에서 차지하는 공간을 1kB = 1024바이트 단위로 표시합니다. 디스크 공간은 블록 단위로 할당되므로 표시된 크기는 항상 표시된 공간보다 약간 큽니다(1kB 단위와 동일).file
du -k file
file
du -k
ls -kl
ls -l
디렉토리의 경우 ls -ld dir
의 파일 및 하위 디렉토리에 대한 파일 이름 목록(및 많은 속성)의 크기를 표시합니다 dir
. 이는 파일 이름 목록일 뿐이며 파일이나 하위 디렉터리의 내용은 아닙니다. 따라서 파일을 추가하면 크기가 증가 dir
하지만(파일이 비어 있더라도) 파일 중 하나가 커지면 크기는 동일하게 유지됩니다 dir
.
dir
그러나 목록의 공간에서 파일을 제거 하면 즉시 회수되지는 않지만 삭제된 파일에 대한 항목은 사용되지 않은 것으로 표시된 다음 회수됩니다(실제로 구현에 따라 다르지만 제가 설명한 내용과 거의 같습니다) 보편적입니다) 요즘 행동). 이것이 ls -ld
바로 파일을 삭제할 때 훨씬 나중에까지 출력에 변경 사항이 표시되지 않을 수 있는 이유입니다.
마지막으로 디스크의 모든 파일과 모든 하위 디렉터리(예상)가 차지하는 표시 공간은 du -ks dir
1kB = 1024바이트입니다. 위의 설명을 고려하면 이는 의 출력과 관련이 없습니다.dir
dir
ls -kld dir
답변2
ls -l
레벨 1 파일 크기만 표시됩니다.
du
폴더 크기(폴더 아래 파일 크기의 합계)가 반복적으로 표시됩니다.