1TB 驅動壓縮後顯示只有 3.8GB,我做錯了什麼?
在 Linux Mint 20.2 Cinnamon 上,我想創建包含 Windows 10 的輔助磁碟驅動器 (SATA) 的磁碟映像,現在沒關係,直接
gzip
使用Parallelgzip
=pigz
編輯到 NTFS 格式的外部 HDD 上(即時壓縮)。我的問題是在生成的壓縮文件中,內容的大小有些扭曲(錯誤),我希望您看看:
1TB 驅動器未壓縮磁碟僅顯示 3.8GB,而其壓縮大小為 193 GB。
$ 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
我剛剛執行的以下 shell 片段的註釋
- 序列號被刪減,當然 (
ABCDEFGHIJKLMNO
)- 我試圖用
--size
ofpv
命令強制大小- 整個磁碟的確切字節大小來自
smartctl -i /dev/sdX
我剛剛執行的 shell 片段如下
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
and的版本pigz
:
- 我使用的是打包版本
pv
:1.6.6-1- 我正在使用的編譯版本
pigz
:2.6
我可能剛剛找到了這個奇怪的答案。
正如
gzip
手冊頁所說:錯誤:該
gzip
格式表示輸入大小以 2^32 為模,因此該選項報告不正確的未壓縮大小和4 GB 及更大--list
的未壓縮文件的壓縮比。它進一步指出:
要解決此問題,您可以使用以下命令來發現大型未壓縮文件的真實大小:
zcat file.gz | wc -c
.就個人而言:可以找出實際大小的命令可能對像 1TB 這樣的非常大的文件沒有用,因為我真的無法想像它首先會在哪裡解壓縮此類文件。其次,這需要很長時間。即使空間不是問題,SSD也會存在磨損問題等。
很明顯
gzip
實際上是導致問題的原因。它不會消失。實際上,它會導致無法觀看解壓進度。(當然,不餵pv
大小。)那麼有什麼可行的解決方案嗎?
可悲的是,到目前為止,我什麼也沒找到。我剛剛嘗試了Parallel
bzip2
(直接來自 Ubuntu 焦點宇宙),它還報告了無效的文件大小(這次是 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;
可以在此處找到我的壓縮機候選者與他們的速度的列表。但如果它消失了,這裡有一個截圖(點擊放大):