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が、それを証明することはできません。通常のファイル(〜2 GB)を使用したテストシナリオは、予想どおりうまく機能しました。これはバグかもgzip…?

私がここで何を間違っているのか?よろしくお願いします。


おそらく最後に紹介するのはpvバージョンですpigz

  • 私はパッケージバージョンを使用していますpv:1.6.6-1

  • 私はコンパイルされたバージョンpigz2.6を使用しています。

答え1

私はこの奇妙な現象に対する答えを見つけたかもしれません。

〜のようにgzipマニュアルページ説明する:

昆虫gzipフォーマットはモジュロ2 ^ 32の入力サイズを意味するため、この--listオプションは誤った圧縮されていないサイズと圧縮されていないファイルの圧縮率を報告します。4GB以上

また、次のように指定します。

この問題を解決するには、次のコマンドを使用して圧縮されていない大容量ファイルの実際のサイズを取得できますzcat file.gz | wc -c

個人的には:実際のサイズを調べるこのコマンドは、1TBなどの非常に大きなファイルには役に立ちません。そもそもこれらのファイルの圧縮をどこから解くか想像できないからです。第二に、時間がかかります。スペースが問題にならなくても、SSDには摩耗問題などがあります。

明らかに、gzipこれは実際に問題を引き起こしているようです。そしてそれは消えません。実際、これにより減圧の進行状況が見られなくなります。(もちろんpvサイズは供給されません。)


それでは、実現可能な解決策はありますか?

残念ながら、これまで何も見つかりませんでした。今試しました。平行線bzip2(Ubuntu Focus Universeから直接入手可能)また、間違ったファイルサイズ(今回は202 GB)も報告されます。比較的迅速に完了する必要があるので、これが私の候補です。他の迅速な選択肢が見つからない場合は、この方法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;

ここで私の候補コンプレッサーのリストと速度を確認できます。ただし、消えた場合は、スクリーンショットは次のようになります(拡大するにはクリック)。

コンプレッサープログラムのリストと速度の比較

関連情報