`du -b`는 `ls`와 다른 크기를 표시합니다.

`du -b`는 `ls`와 다른 크기를 표시합니다.

수백 개의 파일(실제 파일, 심볼릭 링크 없음, 하위 디렉터리 없음)이 있는 디렉터리가 있습니다.

ls -laExcel에서 크기를 사용하고 합산 하면 287190바이트(?)가 표시됩니다.

바이트(?)를 사용 du -b하거나 du --apparent-size --block-size=1얻을 때.422358

둘 다 같은 뜻인 줄 알았는데 왜 차이가 나는 걸까요?

답변1

du모든 파일 크기의 합과 다른 디스크 사용량을 제공합니다.

예를 들어, a는 du -b file"dir" 디렉토리를 생성하고 동일한 파일을 "dir"에 넣은 다음 실행하는 것과는 다른 출력을 제공합니다 du -b dir. 내 시스템에서 디렉토리의 "오버헤드"에는 30바이트가 추가됩니다. 디렉토리의 내용에 따라 디렉토리 크기가 변할 것이라고 생각합니다(하지만 완전히 선형이라면 놀랄 것입니다).

또한 차이점의 상대적 크기는 상당히 많은 파일이 포함된 숨겨진 디렉토리가 누락되었거나 많은 숨겨진 파일이 누락되었을 수 있음을 의미합니다(-a 플래그를 사용한 경우에도).

또한 한 도구에서는 심볼릭 링크를 따르고 다른 도구에서는 심볼릭 링크를 따르지 않아 불일치가 발생할 수 있습니다.

마지막으로, 일부 파일 시스템의 경우 파일 내용이 충분히 작으면 파일 시스템 Inode에 인라인될 수 있으며, 많은 파일 시스템의 경우 블록이 파일 내용을 보유하도록 예약되어 있습니다. 완전히 사용되지 않았습니다. 이러한 변경 사항은 두 가지를 비교하려고 할 때 추가 노이즈를 추가합니다.

답변2

하드 드라이브는 여러 개의 인클로저로 나누어져 있습니다. 각 파일은 하나 이상의 클러스터를 차지합니다.

16바이트 클러스터가 있는 하드 드라이브를 상상해 보십시오.

12바이트 파일은 클러스터 1개를 차지하며 일부 바이트는 클러스터에서 사용되지 않습니다. ls를 사용하면 파일 크기는 12가 되고, du를 사용하면 파일 크기는 16이 됩니다.

32바이트 파일은 정확히 2개의 클러스터를 차지합니다. ls를 사용하면 파일 크기는 32가 되고, du를 사용하면 파일 크기는 32가 됩니다.

모든 파일에 대해 이 작업을 수행하면 요약하면 작성한 값을 얻게 됩니다.

추가 정보:https://en.wikipedia.org/wiki/Data_cluster

관련 정보