dd - USB フラッシュ、SD カードのバックアップ/復元
バックアップ
$ sudo parted -l
モデル: Kingston UHS-II SD Reader (scsi) ディスク /dev/sdc: 125GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194kB 138MB 134MB primary fat32 boot, lba 2 138MB 125GB 125GB primary ext4
$ mount $ sudo umount /run/media/tomoyan/2565-1BA0 $ sudo dd if=/dev/sdc of=~/dietpi-sd-backup_20250517.img bs=16M status=progress
124939927552 bytes (125 GB, 116 GiB) copied, 3069 s, 40.7 MB/s 7447+0 records in 7447+0 records out 124939927552 bytes (125 GB, 116 GiB) copied, 3070.18 s, 40.7 MB/s
Or
$ sudo dd if=/dev/sdc bs=16M status=progress | bzip2 --best > ~/dietpi-sd-backup_20250517.img
復元
$ sudo dd if=~/dietpi-sd-backup_20250517.img of=/dev/sdc bs=16M status=progress
124939927552 bytes (125 GB, 116 GiB) copied, 3069 s, 40.7 MB/s 7447+0 records in 7447+0 records out 124939927552 bytes (125 GB, 116 GiB) copied, 3070.18 s, 40.7 MB/s
Raw Image のマウント
losetup の使い方
$ losetup -h
Usage: losetup [options] [<loopdev>] losetup [options] -f | <loopdev> <file> Set up and control loop devices. Options: -a, --all list all used devices -d, --detach <loopdev>... detach one or more devices -D, --detach-all detach all used devices -f, --find find first unused device -c, --set-capacity <loopdev> resize the device -j, --associated <file> list all devices associated with <file> -L, --nooverlap avoid possible conflict between devices -o, --offset <num> start at offset <num> into file --sizelimit <num> device is limited to <num> bytes of the file -b, --sector-size <num> set the logical sector size to <num> -P, --partscan create a partitioned loop device -r, --read-only set up a read-only loop device --direct-io[=<on|off>] open backing file with O_DIRECT --loop-ref <string> loop device reference --show print device name after setup (with -f) -v, --verbose verbose mode -J, --json use JSON --list output format -l, --list list info about all or specified (default) -n, --noheadings don't print headings for --list output -O, --output <cols> specify columns to output for --list --output-all output all columns --raw use raw --list output format -h, --help display this help -V, --version display version Available output columns: NAME loop device name AUTOCLEAR autoclear flag set BACK-FILE device backing file BACK-INO backing file inode number BACK-MAJ:MIN backing file major:minor device number BACK-MAJ backing file major device number BACK-MIN backing file minor device number MAJ:MIN loop device major:minor number MAJ loop device major number MIN loop device minor number OFFSET offset from the beginning PARTSCAN partscan flag set REF loop device reference string RO read-only device SIZELIMIT size limit of the file in bytes DIO access backing file with direct-io LOG-SEC logical sector size in bytes For more details see losetup(8).
loop デバイスのセットアップとマウント
$ sudo losetup -f -P aiy-vk-001-backup_20250517.img $ losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC /dev/loop0 0 0 0 0 /home/tomoyan/aiy-vk-001-backup_20250517.img 0 512
$ sudo parted /dev/loop0 print
モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 126GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194kB 273MB 268MB primary fat32 lba 2 273MB 126GB 126GB primary ext4
$ sudo mkdir /run/media/tomoyan/boot $ sudo mount /dev/loop0p1 /run/media/tomoyan/boot $ ls /run/media/tomoyan/boot
COPYING.linux bcm2709-rpi-2-b.dtb bcm2711-rpi-cm4.dtb fixup_cd.dat start.elf LICENCE.broadcom bcm2710-rpi-2-b.dtb bootcode.bin fixup_db.dat start4.elf 'System Volume Information' bcm2710-rpi-3-b-plus.dtb cmdline.txt fixup_x.dat start4cd.elf bcm2708-rpi-b-plus.dtb bcm2710-rpi-3-b.dtb config.txt issue.txt start4db.elf bcm2708-rpi-b-rev1.dtb bcm2710-rpi-cm3.dtb fixup.dat kernel.img start4x.elf bcm2708-rpi-b.dtb bcm2710-rpi-zero-2-w.dtb fixup4.dat kernel7.img start_cd.elf bcm2708-rpi-cm.dtb bcm2710-rpi-zero-2.dtb fixup4cd.dat kernel7l.img start_db.elf bcm2708-rpi-zero-w.dtb bcm2711-rpi-4-b.dtb fixup4db.dat kernel8.img start_x.elf bcm2708-rpi-zero.dtb bcm2711-rpi-400.dtb fixup4x.dat overlays
アンマウント
$ sudo umount /run/media/tomoyan/boot $ sudo rm -r /run/media/tomoyan/boot