Linuxでは、次のことができます
dd if=/dev/sdb of=bckup.img
ただし、ディスクが32GBで4GBしか使用されていない場合、32GBのイメージファイルは時空の無駄です。有効なデータのみで画像を作成する方法やツールはありますか?
最善のことは
メタデータを保持するすべてのパーティションからすべてのファイルをコピーします
mkdir -p myimage/partition1
mkdir myimage/partition2
Sudo cp -Rrf --preserve=all /media/mount_point_partition1/* myimage/partition1/
Sudo cp -Rrf --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 -Rrf --preserve=all myimage/partition1/* /media/mount_point_partition1/
Sudo cp -Rrf --preserve=all myimage/partition2/* /media/mount_point_partition2/
MBRをコピーして戻す
Sudo dd if=myimage/mbr.img of=/dev/sdX bs=446 count=1
今、新しいディスクをお楽しみください!
これに対処するための非常に優れたシンプルな方法は、次のようなgzipを介してパイプするだけです。
# dd if=/dev/sdb | gzip > backup.img.gz
これにより、画像が圧縮され、ほとんどの場合、未使用のスペースはほとんどゼロに圧縮されます。
これを使用して、そのようなイメージを復元します。
# cat backup.img.gz | gunzip | dd of=/dev/sdb
注:最近削除されたファイルが多数ある場合、イメージサイズは依然として大きい可能性があります(ファイルを削除しても、基礎となるセクターがゼロになるとは限りません)。ゼロを含む大きなファイルを作成してすぐに削除することにより、空き領域を消去できます。
# cd /media/flashdrive
# dd if=/dev/zero of=bigfile bs=1M # let it run and quit by disk full error
# rm bigfile
dd
の-bsおよびcountパラメーターを使用すると、 のステップ2に示すように、イメージのサイズを制限できます。 1665017 と答えます。
作成する画像のサイズはすでにわかっているかもしれません。そうでない場合は、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単位の合計使用スペース=バイト単位の合計使用スペース/ 10243 (ここでは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
がマウントされたパーティションでnot実行されるべきであるというアドバイスを見てきました。むしろ、自分がスケッチを鏡に描いてスケッチを作成しようとしているように見えます。それは少し大ざっぱです。
16 GB、32 GBなどの大きなSDカードを持っているが、バックアップでスペースを節約したい場合は、次を使用できます。
Sudo apt-get install gnome-disk-utility
あなたのUSBドライブが実際に持っている魔女の手紙を確認するためにディスクユーティリティを開きます:
gnome-disks
私の場合、Raspbianイメージを含む32GB SDカードは/ dev/sdeとして認識されます
だから私は/dev/sde
で実行します:
Sudo dd bs=4M status=progress if=/dev/sde | gzip > \
/you-selected-full-path-here/raspberry-images/`date +%Y%m%d`_rpi_image_backup.gz
status=progress gives you progress bar indication
| gzip > compresses the 32 GB total size and not writing the empty space from the 32 GB
`date +%Y%m%d` writes today date in the filename
出力:20190529_rpi_image_backup.gz
また、サイズはわずか3.5GBです。この画像を新しいSDカードに書き込む場合は、次を使用します。
また、32 GBから作成されたこのイメージを16 GBまたは8 GBのディスクに書き込むこともできますが、これはイメージが大きすぎると文句を言うことはありません。