1TB 드라이브는 압축 후 3.8GB만 표시됩니다. 제가 뭘 잘못하고 있나요?

1TB 드라이브는 압축 후 3.8GB만 표시됩니다. 제가 뭘 잘못하고 있나요?

gzipLinux Mint 20.2 Cinnamon에서 Windows 10용 보조 디스크 드라이브(SATA)가 포함된 디스크 이미지를 생성하고 싶습니다. 지금은 중요 하지 않습니다.평행 gzip=pigzNTFS 형식의 외장 HDD에(즉시 압축)

내 문제는 어떤 이유로 생성된 zip 파일 내에 있습니다.꼬인콘텐츠의 (잘못된) 크기를 확인하시기 바랍니다.

1TB 드라이브의 압축되지 않은 디스크는 3.8GB만 표시되는 반면 압축된 크기는 193GB입니다.

1TB 드라이브의 압축되지 않은 디스크는 3.8GB만 표시되는 반면 압축된 크기는 193GB입니다.

$ gzip --list sata-disk--windows10--2021-Sep-24.img.gz 
         compressed        uncompressed  ratio uncompressed_name
       206222131640          3772473344 -5366.5% sata-disk--windows10--2021-Sep-24.img
-rwxrwxrwx 1 vlastimil vlastimil 193G 2021-Sep-24 sata-disk--windows10--2021-Sep-24.img.gz

방금 실행한 다음 셸 조각에 대한 설명

  • 물론 일련번호는 검열되었습니다( ABCDEFGHIJKLMNO).

  • --sizepvof 명령을 사용하여 강제로 크기 조정을 시도했습니다.

  • 전체 디스크의 정확한 바이트 크기는 다음에서 비롯됩니다.smartctl -i /dev/sdX


방금 실행한 쉘 스니펫은 다음과 같습니다.

dev=/dev/disk/by-id/ata-Samsung_SSD_870_QVO_1TB_ABCDEFGHIJKLMNO; \
file=/media/vlastimil/4TB_Seagate_NTFS/Backups/sata-disk--windows10--"$(date +%Y-%b-%d)".img.gz; \
pv --size 1000204886016 < "$dev" | pigz -9 > "$file"

나는 파이프를 사용하는 방법이나 그 문제에 문제가 있다고 확신 pv하지만 그것을 증명할 수는 없습니다. 일반 파일(~2GB)을 사용한 테스트 시나리오는 예상대로 잘 작동했습니다. 이거 버그일지도 gzip...?

내가 여기서 뭘 잘못하고 있는 걸까? 미리 감사드립니다.


아마도 마지막으로 소개할 것은 pv및 버전일 것입니다 pigz.

  • 나는 패키지 버전을 사용하고 있습니다 pv: 1.6.6-1

  • 저는 컴파일된 버전 pigz인 2.6을 사용하고 있습니다.

답변1

나는 방금 이 이상한 현상에 대한 답을 찾았을 수도 있습니다.

~처럼gzip매뉴얼 페이지설명하다:

곤충: gzip형식은 모듈로 2^32의 입력 크기를 의미하므로 이 --list옵션은 잘못된 압축되지 않은 크기와 압축되지 않은 파일의 압축 비율을 보고합니다.4GB 이상.

또한 다음과 같이 명시합니다.

이 문제를 해결하려면 다음 명령을 사용하여 압축되지 않은 대용량 파일의 실제 크기를 검색할 수 있습니다 zcat file.gz | wc -c.

개인적으로: 실제 크기를 알아내는 이 명령은 1TB와 같은 매우 큰 파일에는 유용하지 않을 수 있습니다. 애초에 이러한 파일의 압축을 어디에서 풀지 상상할 수 없기 때문입니다. 둘째, 시간이 오래 걸린다. 공간이 문제가 되지 않더라도 SSD에는 마모 문제 등이 있습니다.

분명히 gzip이것이 실제로 문제를 일으키는 것 같습니다. 그리고 그것은 사라지지 않을 것입니다.실제로 이로 인해 감압 진행 상황을 볼 수 없게 됩니다.(물론 pv사이즈는 공급되지 않습니다.)


그렇다면 실현 가능한 해결책이 있습니까?

안타깝게도 지금까지 아무것도 찾지 못했습니다. 방금 시도했어요평행선bzip2(Ubuntu Focus Universe에서 직접 제공) 또한 잘못된 파일 크기(이번에는 202GB)도 보고됩니다. 상대적으로 빠르게 완료해야 하므로 이것이 내 후보입니다. 다른 빠른 대안을 찾을 수 없다면 이 방법 gzip이 가장 빠르기 때문에 계속 사용하겠습니다.


색상으로 시작/끝나는 예 :)

# UPDATED on 2021-sep-25 03:00 AM
# SATA disk backup using Parallel `gzip` = `pigz` (compiled version 2.6)
tput bold; tput setaf 2; printf '%s' 'Start : '; date; printf '\n'; tput sgr0; \
gz_date=$(date +%Y-%b-%d | tr '[:upper:]' '[:lower:]'); \
gz_disk=/dev/disk/by-id/ata-Samsung_SSD_870_QVO_1TB_ABCDEFGHIJKLMNO; \
gz_file=/media/vlastimil/4TB_Seagate_Ext4/Backups/sata-disk--windows10--"$gz_date".img.gz; \
pv --size 1000204886016 < "$gz_disk" | pigz -9 > "$gz_file"; \
printf '\n'; tput bold; tput setaf 2; printf '%s' 'Finish: '; date; tput sgr0;

여기에서 내 후보 압축기 목록과 속도를 확인할 수 있습니다.하지만 사라지는 경우 스크린샷은 다음과 같습니다(확대하려면 클릭).

압축기 프로그램 목록 및 속도 비교

관련 정보