linux:dd

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

$ 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).

$ 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