パーティションイメージの作成(使用済みスペースのみ)

パーティションイメージの作成(使用済みスペースのみ)

sdb13.3GBのサイズのパーティションがあります。 3.3GBから1.9GBだけを使用し、そのうち1.2GBが空きスペースだ。このパーティションのイメージを作成したいと思います。しかし、画像は1.9 GBのスペースしか使用したくありません。

ddを使ってコマンドを実行すると、次のようになります。

dd if=/dev/sdb1 of=/home/data/Os.img bs=1M status=progress

ddは3.3GBのイメージを作成していますが、割り当てられていないスペースがOSイメージの一部になることは望ましくありません。

だから別の解決策を試しました。解決策が見つかりました。

dd if=/dev/sdb1 of=/home/data/OS.img bs=1M count=1946 status=progress

このソリューションは1.9GBの画像を生成し、ブロックサイズを1Mと定義しているため、数は1946で、合計1.9GBが提供されます。

質問 このddコマンドが使用済みスペースのイメージのみを生成するのか、使用済みスペースと未使用スペースの両方を含む1.9GBイメージのみを生成するのかは不明です。

使用されたスペースに対してのみイメージを生成する別の方法はありますか?

ベストアンサー1

この回答しましたここ

まず、パーティションのイメージを作成します。

その後、losstupを使用して画像をマウントします。ディスクではなくパーティションなので、partscanフラグは必要ありません。

# lsblk
# losetup --find foo.img

新しく作成されたループデバイスを探す

# lsblk
loop1    7:1    0   4096M  0 loop 

大きな空のファイルを作成し、残りのスペースをゼロにします。

# mount /dev/loop1 /mnt
# dd if=/dev/zero of=/mnt/filler conv=fsync bs=1M
# rm /mnt/filler
# umount /dev/loop1

それでは、画像を圧縮してみてください。

# ls -s
4096M foo.img
# gzip foo.img
# ls -s
11M foo.img.gz

これでパーティションイメージングが完了しました。

パーティションにext4ファイルシステムがある場合は、次のコマンドを使用してサイズを変更できます。2fs サイズ変更最小サイズで。これにより、すべてのデータが最初のブロックに移動されます。

e2fsck -f /dev/loop1
resize2fs -M /dev/loop1

おすすめ記事