ddを使用してディスクを複製しますが、特定のパーティションを除外する方法は?

ddを使用してディスクを複製しますが、特定のパーティションを除外する方法は?

ddを使用してディスクを複製しますが、特定のパーティションを除外する方法は?

だから私は(Raspberry Pi 4Bで)次のようになります。

Device         Boot     Start        End   Sectors   Size Id Type
/dev/mmcblk0p1           8192     532479    524288   256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2         532480  227000319 226467840   108G 83 Linux
/dev/mmcblk0p3      227000320 1000144895 773144576 368.7G 83 Linux

pi.img必要に応じて復元できるように、システム全体をファイル(おそらく)にバックアップしたいと思います。

しかし、バックアップする方法/dev/mmcblk0p1/dev/mmcblk0p2 ただ? (/dev/mmcblk0p3動画が多いパーティションで368GBが大きすぎて除外しました。)

これを行うことができない場合、dd他のオプションはありますか?ありがとうございます。

答え1

「バックアップセクター227000320」

完全な/dev/mmcblk0pディスクのバックアップを開始し、/dev/mmcblk0p2の最後でコピーを停止します。 227000320 セクタとして計算されます。

ノート:上記の入力内容には基本情報がないため、以下の情報があるとします。

単位:1 * 512 = 512バイトセクタ

部門サイズ(論理/物理): 512バイト/512バイト

これは、ユニット番号とセクタ番号が正確に何を示すか(512バイト)を伝えます。

以下のように、ddデフォルト設定(bs = 512またはそれに対応するbs = 1b)を使用してバックアップします。ただし、bs値が小さくIOアクセスが大きいため、このコマンドは時間がかかりすぎます。最適化されたコマンドが必要です。 (このコードは理解を助けるためのものです。)

sudo dd if=/dev/mmcblk0p of=/backup_folder/RasPiBackup_1b.img bs=1b count=227000320 status=progress

ノート: 範囲「1b」同じ「512」。必要に応じて交換できます。以下の情報源を参照してください。

説明によるとhttps://www.landoflinux.com/linux_dd_command.html:

b = 512 | K = 1024 | M = 1024 * 1024 | G=1024*1024*1024

あなたの場合:bs - >カウント| 1b - > 227000320 | 1K -> 113500160 | 1M -> 1G -> 109

私の(Pi4 4GB)システムでは、最も速いコピー速度はbs = 1Mとbs = 4Mの間です。

### バックアップの開始###

したがって、最適化されたコマンドは次のようになります。

sudo dd if=/dev/mmcblk0p of=/backup_folder/RasPiBackup_1M.img bs=1M count=110840 status=progress

画像の回復

sudo dd if=/backup_folder/RasPiBackup_1M.img of=/dev/mmcblk0p bs=1M status=progress

または

バックアップにpigz(GZipの並列実装)を使用すると、大量のスペースを節約し、圧縮時間を2.5倍短縮できます。 pv コマンドは進行状況を表示します。

sudo dd if=/dev/mmcblk0p bs=1M count=110840 | pv | pigz > /backup_folder/RasPiBackup_1M.img.gz

pigz画像の回復

pigz -d  /backup_folder/RasPiBackup_1M.img.gz | pv | sudo dd of=/dev/mmcblk0p bs=1M

### バックアップの終了###

### 画像処理の開始###

画像コンテンツの確認

sudo fdisk -l /backup_folder/RasPiBackup_1M.img

MOUNTは/dev/mmcblk0p1パーティション(8192 * 512 = 4194304)をミラーリングしてその内容を表示します。

sudo mkdir /mnt/RasPiBackup-mmcblk0p1
sudo mount -o loop,offset=4194304 /backup_folder/RasPiBackup_1M.img /mnt/RasPiBackup-mmcblk0p1

MOUNTは/dev/mmcblk0p2パーティション(532480 * 512 = 272629760)をミラーリングしてその内容を表示します。

sudo mkdir /mnt/RasPiBackup-mmcblk0p2
sudo mount -o loop,offset=272629760 /backup_folder/RasPiBackup_1M.img /mnt/RasPiBackup-mmcblk0p2

/dev/mmcblk0p3の「GHOST」パーティション情報の削除

メモ:mmcblk0p3パーティションはバックアップされていませんが、イメージファイルにはまだそれに関する設定情報が含まれています。我々はそれを簡単に削除することができます。 (無視するエラー:ディスクの外側にパーティションがありません!)

イメージファイルから使用可能なパーティションを印刷します。

sudo parted /backup_folder/RasPiBackup_1M.img 'print'

/dev/mmcblk0p3はパーティション3なので削除してください。

sudo parted /backup_folder/RasPiBackup_1M.img 'rm 3'

SHRINK は、イメージから使用されていないスペースを取り除き、より小さい SD カードにも収まるようにイメージサイズを縮小できます。 https://github.com/Drewsif/PiShrink

sudo pishrink.sh /backup_folder/RasPiBackup_1M.img

RasPiBackup_1M.imgのインスタンスをさらに保持する場合は、圧縮して/backup_folderのサイズを小さくします。 GZipの並列実装:https://github.com/madler/pigz

pigz /backup_folder/RasPiBackup_1M.img /backup_folder/RasPiBackup_1M.img.gz

解凍せずにアーカイブファイルの内容を一覧表示する

pigz -l /backup_folder/RasPiBackup_1M.img.gz

### 画像処理終了###

関連情報