
HostAでHDDA(パーティション)のイメージバックアップを作成し、HostBに保存しました。
ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 | gzip -1 -" | dd of=sda1.gz conv=sync,noerror
HDDサイズは200GBで、生成される画像は約45GBです。
ドライブサイズと比較して画像サイズが正確ですか?約77%の圧縮を達成しますか?
私の意見は次のとおりです。
次に、LVM2_memberドライブをフォーマットしてext3で再作成し、探しているデータにアクセスできるように作成したイメージを復元します。
ありがとうございます!
答え1
ディスクイメージの圧縮率は、保存されているデータの種類、使用されている、または使用されているデータの量によって大きく異なります(ドライブの寿命の間は明示的に削除されません)。
一言で言い切れません。 77%は、0%(ビデオ/oggsでいっぱいのディスク)と99%(空、最近ゼロで消去されたディスク)と同じくらい合理的です。
それでは、コマンドのいくつかの説明を見てみましょう。
ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 | gzip -1 -" |
dd of=sda1.gz conv=sync,noerror
conv=sync,noerror
ディスクからの読み取りに使用されます。dd
ソースファイルから固定サイズの読み取りを実行し、ターゲットファイルへの固定サイズの書き込みのみを実行する愚かなアプリケーションです。
ディスクにエラーが発生し、セクタにエラーが発生すると、512バイトの固定サイズの読み取りが失敗し、何も返されない可能性があります。dd
そのセクタの出力にゼロバイトが書き込まれると、データが移動してターゲットが破損したことを意味します。代わりに、あなたが望むのは、失敗したセクタを置き換えるためにターゲットに512バイトのゼロを出力することです。それがまさにconv=sync
その部分です。
また、最初のエラー=>で停止したくありませんconv=noerror
。
dd
これは、ブロックデバイスを読み取るためにのみ便利です(左)。dd
右側は、dd
sshプロセスによって提供されるパイプからデータを読み取ります。今回もdd
パイプから一度に512バイトを読みます。サイズが512の倍数ではなくチャンクで出力が記録されない場合はssh
どうなりますか?その後、dd
パイプから不完全な512ブロックを読み、conv=sync
それを埋めてzeros
圧縮ファイルを破損する可能性があります。
ここで欲しいものは次のとおりです。
ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 conv=sync,noerror |
gzip -1" > sda1.gz
または、圧縮が悪い場合でも、より速くフッターに少なくとも4 GB以上の圧縮されていないサイズを記録する方法をlzop
代わりに使用してください。gzip