パーティションまたは完全なディスク イメージを作成するために、conv=sparse を指定した dd を使用しますか?

パーティションまたは完全なディスク イメージを作成するために、conv=sparse を指定した dd を使用しますか?

何らかの理由で、ddを使用して「小さな」画像ファイルを作成することに関する質問や回答はあまりないようです。conv=スパースここにオプションがあります。

では、ddをイメージ作成に使う場合、例えば次のようにすれば安全に使えるでしょうか?dd if=/dev/sda または=/media/ストレージデバイス/sda.img 変換=スパースターゲット上で(はるかに)少ないスペースを使用するイメージ ファイルを取得するには?

重要かどうかはわかりませんが、この場合、ソースは EXT4 ファイルシステムを備えた SSD であり、使用率は 15% のみ (非常に新しいため)、ターゲットも EXT4 fs を使用します。

それとも、これはおそらく(特定の状況下では)かなり悪い考えであり、(後で、たとえば復元する必要がある場合に)問題を引き起こす可能性がありますか?

また、ターゲットがネットワークマウントまたはファイルシステムの場合にもこれが機能するかどうか疑問に思っています。

目標は、簡単にマウントして使用できる状態を保ちながら、必要以上に多くのスペースを占有しないパーティションまたは(さらに良いのは)ディスク全体のイメージ ファイルを取得することです。

余分な圧縮は実際には必要でも望まれてもいませんし、通常は結果として得られるイメージがマウントできなくなるため、なくても大丈夫です。

Clonezillaは使用済みセクターのみを保存するなどの機能があることは知っていますが、その制限は好きではありません。例えば画像形式の制限により、画像を閲覧またはマウントすることはできません(もちろん、dd はすでにすべてのシステムで利用可能です。)

よろしくお願いします

答え1

これを達成するために私が見つけた最も簡単な方法は、適切なツール(Linux では fstrim、Windows ではツールの名前は何でも)を使用してドライブ上のすべてのパーティションをトリミングしgdiskdd各パーティションをコンプレッサー(通常は速度のために zstd を使用)を使用して gpt パーティション テーブルをファイルにダンプし、出力の圧縮イメージをパーティション テーブル ダンプと一緒に保存することです。各パーティション イメージは使用済み領域のサイズより少し小さく圧縮されるため、後でイメージを空のドライブに簡単に戻すことができます。私はすべての新品のラップトップでこれを実行して、ドライブを消去して Linux をインストールする前にクリーンな工場出荷時のイメージを取得します。保証修理のためにマシンを送る必要がある場合や、マシンを販売することに決めた場合は、工場出荷時の状態に簡単に復元できます。

答え2

使用するのが賢明/安全かどうかは答えられませんが、圧縮 (私は zstd を使用します) と併用し、ソース ディスクを「準備」すると、conv=sparseスパース化された結果が得られます。dd

Win 11 がインストールされた 256GB SSD の画像を撮りました。

Windows では、NTFS パーティションをトリミングし、すべての空き領域にゼロを書き込み、もう一度トリミングを実行しました。

トリミング:defrag C: /L

Windows 内の空き領域がゼロです: sdelete -z C:(sysinternals より)

dd私は Linux からとを使用してイメージを作成しましたztd:

dd bs=1024K if="/dev/nvme0n1" | pv --size 256060514304 | zstd --quiet --force -o "/mnt/data/image.img.zst"

画像は、約約で書き込まれ、圧縮されました150〜350MB/秒

その後、ソースディスクの空き領域に実行したときに、データが処理されました1.2GB:-) そして、残りの 220 GB の空き容量に対して、イメージ ファイルはわずか 100 KB ずつ増加しました。

これは「本物の」スパースと同じくらい良いと思います。画像ファイルのサイズは19.3GBW11 のインストール サイズは 48 GB でした (Windows インストールでページ ファイルを削除すると、さらに MB/GB を節約できる可能性があります)。

画像を復元するには:

zstd --quiet --stdout --decompress "/mnt/disk1/image.img.zst" | pv | dd bs=1024K of="/dev/nvme0n1"

追加情報:
Linux でマウントされたパーティションをゼロにしますcat /dev/zero | pv > /mnt/dis1/zero.dat
別の例: W10 LTSC、インストールのサイズ (C:) 18.2GB (ページファイルなし):
dd を使用したイメージ サイズ: 6.26GB
dism を使用したイメージ サイズ: 6.28GB

関連情報