Dd

使用 gzip 恢復硬碟映像會引發錯誤 no space left on device

  • May 11, 2020

我使用以下命令從 256GB 硬碟創建了一個圖像:

dd if=/dev/sda bs=4M | pv -s 256G | gzip > /mnt/mydrive/img.gz

後來我嘗試使用以下命令將映像恢復到另一台電腦上的另一個 512GB 硬碟:

gzip -d /mnt/mydrive/img.gz | pv -s 256G | dd of=/dev/sda bs=4M

第二個命令顯示了很長時間的零字節進度(僅計算秒數,但沒有任何反應),過了一段時間它失敗並出現錯誤,告訴我設備上沒有剩餘空間

問題出在 gzip 命令中,當我將圖像文件解壓縮為 256GB 原始文件xxx.img並在不使用 gzip 的情況下恢復它時,它可以工作:

dd if=/mnt/mydrive/xxx.img bs=4M | pv -s 256G | dd of=/dev/sda bs=4M

顯然問題出在gzip命令中(也試過了gunzip,沒有運氣),作為一種解決方法,我可以使用一個很煩人的巨大的臨時外部驅動器來恢復圖像。壓縮後的圖像大小約為原始圖像的 10%。你知道為什麼gzip會失敗嗎?

旁注:問題不在pvor中dd,以下命令失敗並顯示相同的錯誤消息:

gzip -d /mnt/mydrive/img.gz > /dev/sda

以下命令並不完全符合您的意圖

gzip -d /mnt/mydrive/img.gz > /dev/sda

該命令正在解壓縮文件/mnt/mydrive/img.gz並創建一個名為的文件,該文件imgimg.gz. > /dev/sda沒有做任何有用的事情,因為沒有任何東西/dev/sda通過標準輸出發送到。


這是您需要做的,將輸出發送到標準輸出(使用-c):

gunzip -c /mnt/mydrive/img.gz > /dev/sda

或者

gunzip -c /mnt/mydrive/img.gz | pv -s 256G | dd of=/dev/sda bs=4M

引用自:https://unix.stackexchange.com/questions/585715