5
6

More than 3 years have passed since last update.

DDコマンドでSDカードまるごとバックアップ

Last updated at Posted at 2020-09-20

はじめに

ラズパイイメージをSDカードからまるまるバックアップしてバージョン管理がしたい。
環境はUbuntu 20.0.4

ddコマンドについて

ddコマンドは、dataset definitionコマンドで、ディスクドライブのデータを読み出し・書き込みを行うコマンド。ファイルでのコピーとは異なり、バイナリとしてコピーできるので、MBRやGPTなどのパーティション情報や、ファイルシステムのメタデータまでバックアップができる。そのため、SDカードやHDDの完全なバックアップをとることができるので、万が一今のディスクが破壊されたとしても、バックアップイメージを新しいディスクドライブに書き込めば全く同じ状態に戻すことができる。
なお、ddコマンドはdisk destroyerとも呼ばれている。これは、書き込み先のディスクを誤ってOSの入っているシステムドライブに指定してしまうとデータが壊れて起動しなくなってしまう(筆者は2,3回破壊している・・・)という恐ろしいコマンドであることに由来している。
コマンドを実行する前に、書き込み先を念入りに確認すること。。

手順

まず、fdiskコマンドを使用してSDカードがどのデバイスファイルとして認識されているか確認する。

#SDカードを外した状態で実行
$sudo fdisk -l > before.txt

#SDカードを挿入した状態で実行
$sudo fdisk -l > after.txt

#diffコマンド挿入前後で追加されたデバイスファイルの差分を確認する
$diff -urpN before.txt after.txt
--- before.txt  2020-09-20 15:01:01.056882300 +0900
+++ after.txt   2020-09-20 15:00:35.895621277 +0900
@@ -59,6 +59,19 @@ Device       Start       End   Sectors
 /dev/sda2  1050624 490233855 489183232 233.3G Linux filesystem


+Disk /dev/sdb: 29.74 GiB, 31914983424 bytes, 62333952 sectors
+Disk model: SD Card Reader  
+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: 0x4a030cf2
+
+Device     Boot  Start      End  Sectors  Size Id Type
+/dev/sdb1         8192   532479   524288  256M  c W95 FAT32 (LBA)
+/dev/sdb2       532480 62333951 61801472 29.5G 83 Linux
+
+
 Disk /dev/loop8: 160.16 MiB, 167931904 bytes, 327992 sectors
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes

/dev/sdbがバックアップ対象SDカードのデバイスファイルであることが分かる。sdb1, sdb2とかっていうのは、ディスク内のパーティション番号。

ddコマンドでバックアップする。32GBもバックアップしたくないな。。
とりあえず、テスト用bs(buffer size)3回分(3*4M = 12MB)だけバックアップする。

$sudo dd bs=4M if=/dev/sdb of=./backup.img conv=fsync count=3
$ls -l 
total 12288
-rw-r--r-- 1 root root 12582912  9月 20 15:07 backup.img

できた!

count=3を削除すれば、まるごとバックアップできるはず。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6