zip을 사용할 때 명령줄에 부담을 주지 않고 전체 진행 상황을 어떻게 표시할 수 있나요?

zip을 사용할 때 명령줄에 부담을 주지 않고 전체 진행 상황을 어떻게 표시할 수 있나요?

고정 길이 진행률 표시줄, 파일 또는 바이트 수 또는 더 나아가 남은 예상 시간을 표시하는 타이머가 이상적입니다.

zip표준 동작은 처리된 각 파일에 대해 한 줄을 인쇄하는 것 같지만 수천 개의 파일을 압축할 때 정보가 과부하되는 것을 원하지 않습니다. 얼마나 걸릴지 견적받고 싶습니다.

-q( ) 옵션과 함께 ( ) 옵션을 사용해 보았지만 --quiet표준 출력이 여러 줄의 점으로 가득 차고 유용한 지침이 제공되지 않습니다.-dg--display-globaldots

매뉴얼 페이지에 언급된 대로 시도해 보았지만 -qdgds 10m동일한 결과를 얻었습니다.

-db그런 다음 ( --display-bytes) 및 -dc( ) 를 시도했지만 --display-counts전역 옵션이 없는 것 같아서 각 파일 이름에 대해 다시 인쇄합니다.

마침내 나는 -q그것을 like와 함께 사용해 보았지만 -qdbdc아무것도 출력하지 않았습니다.

흥미롭게도 나는 info-zip 웹사이트에서 "아카이브 작업을 완료하는 데 걸리는 예상 시간을 표시"하는 -de( ) 옵션을 언급하는 매뉴얼 페이지를 발견했습니다.--display-est-to-go

이것이 바로 내가 원하는 것처럼 들리지만 문제는 내 버전에 zip해당 기능이 없다는 것입니다. 저는 Ubuntu 14.04.1 64비트, bash-4.3.30(1) 및 zip-3.00을 사용하고 있습니다. Wikipedia에 따르면 이것은 zip의 최신 안정 버전입니다.

info-zip sourceforge 페이지에 아직 출시되지 않은 베타가 있는데, 내 데이터를 베타에 맡기고 싶지 않습니다.

답변1

7z를 사용할 수 있는 경우:

7z a output.zip folder/

그러면 다음과 같은 진행률 표시줄이 표시됩니다.

Open archive: test.zip
--
Path = test.zip
Type = zip
Physical Size = 232039663

Scanning the drive:
3 folders, 2401 files, 238122225 bytes (228 MiB)

Updating archive: test.zip

Items to compress: 2404

 16% 279 U folder/file.txt  

답변2

zip데이터를 표준 출력으로 압축할 수 있습니다. 따라서 다음과 같은 다른 도구와 결합할 수 있습니다 pv.

zip -qr - [folder] | pv -bep -s $(du -bs [folder] | awk '{print $1}') > [file.zip]

-bep귀하의 편의에 따라 옵션 중 하나를 제거하십시오.

답변3

나는 다음을 성공적으로 사용했습니다.

zip -r [target_zip] [folder_to_zip] 2>&1 | 
pv -lep -s $(ls -Rl1 [folder_to_zip] | egrep -c '^[-/]') > /dev/null

설명은 다음과 같습니다.

zip -r [target_zip] [folder_to_zip] 2>&1 |

zip은 [target_zip] 파일로 반복되고 [folder_to_zip]은 stderr을 stdout으로 리디렉션합니다. stderr에는 다음이 포함됩니다.파일 및 디렉터리당 한 줄처리.

pv -lep -s $(ls -Ral1 [folder_to_zip] | egrep -c '^[-/]') > /dev/null

pv파일 이름이 zip에서 출력되면 파일 이름이 포함된 줄에 파이프하세요. pv행 모드에서 작동(진행률은 행 수를 기준으로 계산되며 크기도 예상 행 수입니다. 참조)PV 매뉴얼 페이지 -l 옵션).

예상 행의 전체 크기는 (ls) [folder_to_zip]을 재귀적으로 나열하고 "-" 또는 "d"로 시작하는 행을 계산하여 수집됩니다. 즉,모든 파일 및 디렉토리('/'로 시작하는 디렉토리를 기억하세요).

모든 파일과 디렉터리가 처리되면 100%에 도달하므로 정확한 완료율은 위에 나와 있습니다.

pedroapero의 대답의 문제점은 처리된(압축된) 바이트 수를 처리될(압축되지 않은) 총 바이트 수로 나눈 값을 기준으로 진행률이 계산된다는 것입니다. 따라서 압축률에 따라 약 30% 정도 프로세스가 완료됩니다.

답변4

명령에 플래그를 추가 할 수 있습니다 -qq. 이것은 나에게 효과적입니다.
예:

zip -r -qq out_chairs.zip out_chairs/

관련 정보