次のコマンドを使用して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.img
gzipを使用せずに復元すると機能します。
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
ファイルを生成します。これは標準出力には何も送信されないため、役に立ちません。img
img.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