ls -l과 du-sh의 파일 크기 차이는 무엇입니까?

ls -l과 du-sh의 파일 크기 차이는 무엇입니까?

나는 수년 동안 나를 괴롭혀온 가장 수수께끼 같은 질문이 있습니다. 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 단위와 동일).filedu -k filefiledu -kls -klls -l

디렉토리의 경우 ls -ld dir의 파일 및 하위 디렉토리에 대한 파일 이름 목록(및 많은 속성)의 크기를 표시합니다 dir. 이는 파일 이름 목록일 뿐이며 파일이나 하위 디렉터리의 내용은 아닙니다. 따라서 파일을 추가하면 크기가 증가 dir하지만(파일이 비어 있더라도) 파일 ​​중 하나가 커지면 크기는 동일하게 유지됩니다 dir.

dir그러나 목록의 공간에서 파일을 제거 하면 즉시 회수되지는 않지만 삭제된 파일에 대한 항목은 사용되지 않은 것으로 표시된 다음 회수됩니다(실제로 구현에 따라 다르지만 제가 설명한 내용과 거의 같습니다) 보편적입니다) 요즘 행동). 이것이 ls -ld바로 파일을 삭제할 때 훨씬 나중에까지 출력에 변경 사항이 표시되지 않을 수 있는 이유입니다.

마지막으로 디스크의 모든 파일과 모든 하위 디렉터리(예상)가 차지하는 표시 공간은 du -ks dir1kB = 1024바이트입니다. 위의 설명을 고려하면 이는 의 출력과 관련이 없습니다.dirdirls -kld dir

답변2

ls -l레벨 1 파일 크기만 표시됩니다.

du폴더 크기(폴더 아래 파일 크기의 합계)가 반복적으로 표시됩니다.

관련 정보