Dd
使用 gzip 恢復硬碟映像會引發錯誤 no space left on device
我使用以下命令從 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
會失敗嗎?旁注:問題不在
pv
or中dd
,以下命令失敗並顯示相同的錯誤消息:gzip -d /mnt/mydrive/img.gz > /dev/sda
以下命令並不完全符合您的意圖
gzip -d /mnt/mydrive/img.gz > /dev/sda
該命令正在解壓縮文件
/mnt/mydrive/img.gz
並創建一個名為的文件,該文件img
是img.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