du는 시간이 지남에 따라 다른 숫자를 표시하고 파일 크기는 비합리적으로 작습니다.

du는 시간이 지남에 따라 다른 숫자를 표시하고 파일 크기는 비합리적으로 작습니다.

Bash 스크립트에서 다음과 같은 것을 실행합니다.

set -x
time convert 'cat.png' -quality 100 test.webp
time convert 'cat.png' -quality 100 test.jpeg

du -h test.webp test.jpeg

일반적으로 다음과 같이 출력됩니다.

+ du -h test.webp test.jpeg
512  test.webp
387K test.jpeg

512webp 파일의 바이트 수는 엄청나게 작아 보입니다. 그렇죠?

터미널에서 실행 하면 du -h다른 크기가 표시됩니다.(이것이 더 합리적입니다).

표시 du되지 않은 것으로 알고 있습니다 .--apparent-size기본 저장소 크기(예: 블록 수에 몇 가지 요소를 곱함) 그러나 여전히 항상 동일한 결정적 결과를 인쇄하고 싶습니다.

무슨 일이야?

답변1

일부 파일 시스템에서는ZFS 및 Btrfs와 마찬가지로du, --apparent-size결과 가 없다시간에 따라 변화.

시간이 지남에 따라 물리적 저장소에 의해 파일 시스템이 지연, 재배열, 압축, 중복 제거 또는 기타 방식으로 수정되지 않을 것이라는 보장은 없습니다.

따라서 Plain은 du언제든지 다른 결과를 제공할 수 있습니다.


자세한 예: 호출 시 show를 strace -v실행하면 du-type 시스템 호출에서 반환된 데이터가 stat먼저 표시됩니다.

newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1, st_size=464124, ...

곧바로:

newfstatat(AT_FDCWD, "test.webp", { ... st_blksize=131072, st_blocks=1029, st_size=464124, ...

관련 정보