gzipを使用してHDDイメージを復元すると、「デバイスに残りのスペースがありません」というエラーが発生します。

gzipを使用してHDDイメージを復元すると、「デバイスに残りのスペースがありません」というエラーが発生します。

次のコマンドを使用して256GB HDDから画像を作成しました。

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

後で、次のコマンドを使用して別のコンピュータ上の別の512GB HDDに画像を復元しようとしました。

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

2番目のコマンドは、長い間ゼロバイトの進行状況を表示し(秒数だけ計算しますが、何も起こりません)、しばらくするとエラーメッセージで失敗します。端末に余分なスペースがありません。

問題はgzipコマンドにあります。イメージファイルの圧縮を元の256GBファイルに解凍し、xxx.imggzipを使用せずに復元すると機能します。

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

明らかに問題はgzipコマンドにあります(それも試しましたがgunzip運がありませんでした)。回避策として、巨大な一時的な外付けドライブを使用して画像を回復することができましたが、これは面倒です。圧縮画像のサイズは元の画像の約10%です。なぜgzip失敗したのかご存知ですか?

注:問題はpvまたはにありませんdd。次のコマンドは、同じエラーメッセージで失敗します。

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

ベストアンサー1

次のコマンドは、期待したものとまったく一致しません。

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

このコマンドはファイルを解凍し、という/mnt/mydrive/img.gzファイルを生成します。これは標準出力には何も送信されないため、役に立ちません。imgimg.gz> /dev/sda/dev/sda


これがあなたがしなければならないことです。出力をstdoutに送信します(を使用して-c):

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

または

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

おすすめ記事