Linuxでは、次のことができます
dd if=/dev/sdb of=bckup.img
しかし、ディスクが 32GB で 4GB しか使用されていない場合、32GB のイメージ ファイルは空間時間の無駄になります。有効なデータのみで画像を作成する方法やツールはありますか?
これに対処するための非常に優れた簡単な方法は、次のように gzip を介して単純にパイプすることです。
# dd if=/dev/sdb | gzip > backup.img.gz
このようにして、画像が圧縮され、ほとんどの場合、未使用のスペースがほとんどなくなります。
これを使用して、そのようなイメージを復元します。
# cat backup.img.gz | gunzip | dd of=/dev/sdb
1 つの注意: 最近削除されたファイルが多数ある場合、イメージ サイズがまだ大きい可能性があります (ファイルを削除しても、基になるセクターがゼロになるとは限りません)。ゼロを含む大きなファイルを作成してすぐに削除することで、空き領域を消去できます。
# cd /media/flashdrive
# dd if=/dev/zero of=bigfile bs=1M # let it run and quit by disk full error
# rm bigfile
最善の方法は
メタデータを保持したまま、すべてのパーティションからすべてのファイルをコピーします
mkdir -p myimage/partition1
mkdir myimage/partition2
sudo cp -rf --preserve=all /media/mount_point_partition1/* myimage/partition1/
sudo cp -rf --preserve=all /media/mount_point_partition2/* myimage/partition2/
MBRを抽出する
sudo dd if=/dev/sdX of=myimage/mbr.img bs=446 count=1
/dev/sdX
対応するデバイスに交換してください。
宛先ディスクを、コピーされたデータよりも大きなサイズのパーティションに分割し、gparted
. ディスクを分割する方法をGoogleで検索してください。
新しくフォーマットされ、パーティション化されたディスクをマウントします。ほとんどのコンピューターでは、ディスクを接続するだけで、マウントされたパーティションを/media
フォルダーに見つけることができます。
次のコマンドを使用して、以前にコピーしたデータを宛先パーティションにコピーします。
sudo cp -rf --preserve=all myimage/partition1/* /media/mount_point_partition1/
sudo cp -rf --preserve=all myimage/partition2/* /media/mount_point_partition2/
MBRをコピーバック
sudo dd if=myimage/mbr.img of=/dev/sdX bs=446 count=1
さあ、新しいディスクをお楽しみください!
回答 1665017のステップ 2 に示すように、 のbsおよびcountパラメータを使用してdd
、画像のサイズを制限できます。
作成したい画像のサイズがすでにわかっている場合があります。そうでない場合は、次から良いアイデアを得ることができますdf
。
df -H --total /
/
ディスク パーティションに関連するすべてのマウント ポイントをスペースで区切ったリストに置き換えます。
より正確な方法は、fdisk
またはお好みのパーティション エディターを使用して、電卓で忙しくすることです。
$ fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00057540
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 186367 184320 90M c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 3481600 1.7G 5 Extended
/dev/mmcblk0p5 188416 3667967 3479552 1.7G 83 Linux
合計使用容量 (バイト単位) = 最後のパーティションの最終セクター X セクター サイズ (ここでは 3667967 x 512)。
GB での合計使用スペース = バイトでの合計使用スペース / 1024 3 (ここでは 1.749023 GB)。
たとえば、イメージを正確に 2 GB にする必要があると判断した場合、次のコマンドでそれが行われます。
dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048
結果のイメージには、最後のパーティションの最大範囲を超えるランダム ノイズも含まれます。
sudo
アカウントがまだ十分な権限を持っていない場合は、上記のコマンドを忘れないでください。
私の目的では、データの最後のビットまで完全にトリミングされた画像は必要ないので、実際のサイズが 1.75 GB の場合、2 GB の画像で十分です。これにより、イメージ内にある残りの 6 GB (または 30 GB またはデバイスに余裕のあるもの) の未使用スペースが切り取られます。
dd
マウントされたパーティションで実行してはならないアドバイスを多くの場所で見てきましたが、直感的に正しいと思われるため、それに従いました。それは自分自身をスケッチしようとしているように見えます.鏡の中でスケッチを作り、あなたが作っているスケッチもスケッチに見えるようにします. 少し大ざっぱです。