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
512
webp 파일의 바이트 수는 엄청나게 작아 보입니다. 그렇죠?
터미널에서 실행 하면 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, ...