`du` 명령의 일관되지 않은 출력

`du` 명령의 일관되지 않은 출력

왜 출력은

du -sch ./

동일하지 않음

du -sch ./*

du -sch예를 들어 사용자의 홈 디렉터리에서 실행하여 51GB를 얻었지만 du -sch *동일한 디렉터리에서 실행하면 47GB가 됩니다. 처음에는 숨겨진 파일을 설명하는 것이라고 생각했지만 거의 4GB의 숨겨진 파일/폴더를 설명하지는 않습니다.

디스크 유틸리티 설명서를 읽었지만 설명을 찾을 수 없습니다.

답변1

처음에는 숨겨진 파일을 설명하는 것이라고 생각했지만 거의 4GB의 숨겨진 파일/폴더를 설명하지는 않습니다.

이것을 어떻게 측정했나요? 난 당신을 생각하다4GB의 숨겨진 파일/디렉토리가 있거나 하드링크가 포함된 경우 (어떤 의미에서는) 더 많을 수도 있습니다.

-h이것은 당신에게 말할 것입니다 ( 더 정확한 결과를 얻기 위해 떨어졌습니다 . tail"전체"만 전달하고 에서 테스트했습니다 bash):

du -sc ./{.[!.],..?}*  | tail -n 1   # hidden
du -sc ./*             | tail -n 1   # non-hidden
du -sc ./{.[!.],..?,}* | tail -n 1   # hidden and non-hidden by wildcards
du -sc ./              | tail -n 1   # directory as a whole

(구문은 다음에서 따옴이 답변).

첫 번째 명령은 누락된 것입니다. 첫 번째 결과와 두 번째 결과의 합을 구합니다. 다음을 제외하면 마지막 두 결과와 동일합니다.

숨겨진 부분과 숨겨지지 않은 부분 사이에 하드링크된 파일이 없다면 말이죠. 그렇다면 그 금액은 더욱 커질 것입니다.이러한 파일은 손으로 합산할 때 두 번 계산되지만 du단일 패스에서 합산할 때는 한 번만 계산됩니다.. 이 경우 숨겨진 파일/디렉토리가 생각하는 것보다 훨씬 더 많은 공간을 차지합니다(이 공간 중 일부는 숨겨지지 않은 부분과 "공유"되지만). 참고하세요-l옵션du이는 이 동작을 제어합니다.

-l, --count-links
하드 링크된 경우 크기를 여러 번 계산합니다 .

관련 정보