web-dev-qa-db-ja.com

ギガバイトのゼロを書き込まずにスパースLinux(EXT4)ディスクイメージを書き込む方法

64 GBのLinuxディスクイメージで、パーティション全体で約50 GBの未使用スペースがあります。ファイルはスパースなので、ディスク上で約14 GBしかかかりません。

しかし、イメージをddすると、64 GB全体が書き込まれるため、かなり時間がかかります。

50 GBのゼロを書き込まなくても、このイメージでdd if=os.img of=/dev/sdbと同等のことができる方法はありますか?

これを行うのに十分スマートなツール、つまりEXT4ファイルシステムを認識するイメージングツールはありますか?

4

ddはこれを処理できます。追加する必要がありますconv=sparseをコマンドラインに追加します。

Manページから:

              try to seek rather than write the output for NUL input blocks
4
Michael Hampton

ボリューム全体のmksquashfsを作成する代わりに、ddを使用して読み取り専用コピーを作成することを検討します。これにより、データがさらに圧縮および重複排除されます。

評価する必要があることに注意してください。使いやすさは特定のユースケースによって異なります。

1
Tomek

ディスクイメージ全体を持っているので不便ですが、次のことができます。

  1. 選択したパーティション分割プログラムを使用して、os.imgにパーティションをリストし、/dev/sdbに作成します
  2. e2imageで各パーティションを復元します。例:e2image -aro 1048576 os.img /dev/sdb1

MBRがある場合、これはMBRを処理しません。 /bin/dd if=os.img of=/dev/sdb bs=512 count=1がそれを行います。

注:linux.die.netのe2imageマニュアルページは古くなっています。バイオニックインストールから:

SYNOPSIS
   e2image [ -r|Q ] [ -f ] device image-file
   e2image -I device image-file
   e2image -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]
0
Mark Wagner