일부 압축기는 작업을 수행하는 동안 정보(압축 비율, 총 시간 및 크기 등)를 표시할 수 있습니다 xz -v
. 예를 들면 다음과 같습니다.
--- % 2,580.2KiB / 6,552.0KiB =0.394 1.2MiB/초0:05
대용량 파일을 압축할 때 압축률이 낮을 때 프로세스를 중지하고 압축되지 않은 상태로 유지할 수 있도록 작업의 압축률을 알고 싶습니다.
이 기능이 있는 다른 프로그램이 있나요? ( xz
압축률은 높으나 속도가 느림)
답변1
이를 수행하는 일반적인 방법은 pv
압축기의 입력 및 출력 크기를 모니터링하는 것과 같은 방법을 사용하는 것입니다. 예를 들어:
$ pv -cpterba -N in /dev/urandom | gzip | pv -cpterba -N out > /dev/null
out: 956MiB 0:00:42 [23.1MiB/s] [22.8MiB/s] [ <=> ]
in: 956MiB 0:00:42 [23.1MiB/s] [22.8MiB/s] [ <=> ]
무작위 데이터를 압축하려고 할 때 예상한 대로 출력 크기가 입력 크기와 동일하다는 것을 위에서 보면 쉽게 알 수 있습니다.
압축률이 매우 좋은 파일을 사용하려고 하면 다음과 같습니다.
$ pv -cpterba -N in /dev/zero | gzip | pv -cpterba -N out > /dev/null
out: 2.62MiB 0:00:25 [ 109KiB/s] [ 107KiB/s] [ <=> ]
in: 2.65GiB 0:00:25 [ 110MiB/s] [ 108MiB/s] [ <=> ]
출력 크기는 2.62MiB, 입력 크기는 2.65GiB로 3배 정도 더 큽니다.
부작용으로 일반 파일에 사용하면 pv
ETA가 제공됩니다.
$ pv -cpterba -N in debian-8.2.0-amd64-DVD-1.iso | gzip | pv -cpterba -N out > /dev/null
out: 578MiB 0:00:27 [22.1MiB/s] [21.4MiB/s] [ <=> ]
in: 595MiB 0:00:27 [22.1MiB/s] [ 22MiB/s] [==> ] 15% ETA 0:02:25
제시 DVD 이미지는 대부분 압축된 파일이라 압축률이 썩 좋지는 않지만, 그래도 완성하는데 2분 30초가 걸린다.
이를 사용하여 이미 실행 중인 프로세스를 모니터링할 수도 있습니다 pv -d
. 실행 중인 압축기에 적용하면 입력 파일과 출력 파일의 위치를 알려주므로 비율을 빠르게 확인할 수 있습니다.
$ pv -pterba -d "$(pidof gzip)"
3:/var/tmp/mp3s.tar: 911MiB 0:00:44 [ 20MiB/s] [19.9MiB/s] [> ] 9% ETA 0:07:35
4:/var/tmp/mp3s.tar.gz: 906MiB 0:00:44 [ 20MiB/s] [19.8MiB/s] [ <=> ]
MP3 Tar 파일도 잘 압축되지 않습니다.
노트:많은 압축기는 블록 단위로 작동합니다. 이것이 바로 전송 속도가 급증한 다음 0으로 이동하여 프로세스를 반복하는 것과 같은 현상이 나타날 수 있는 이유입니다. 실제로 예상되는 비율에 대한 아이디어를 얻으려면 압축기를 잠시 동안 작동시켜야 합니다. 스파이크 이후에는 블록에서 읽을 수 있지만 압축된 버전은 아직 작성되지 않았습니다. 하지만 10블록을 기다렸다면 최대 10%가 틀렸습니다.
(내가 사용하는 pv 옵션: -p
진행률 표시줄 켜기, -t
경과 시간 켜기, -e
ETA 켜기, -r
전송 속도 표시, -b
바이트 카운터 켜기, 파이프라인 작업에서 여러 s -c
만들기 , 레이블 설정).pv
-N