rpi-cloneを用いたRaspberry piのイメージバックアップ

お手軽にインストールできるRaspberry Piですが、結構頻繁にSDカードが破損します。

転ばぬ先の杖ということで、rpi-cloneを用いてバックアップした記録です。

rpi-cloneは縮小コピーもできるので、サイズの小さいSDカードにコピーすることもできます。

また標準のSDコピーと比較して、短時間でコピーできることがポイントです。

rpi-cloneのインストール

git clone https://github.com/billw2/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

バックアップしてみる

lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    1   30G  0 disk
├─sda1        8:1    1  256M  0 part /media/test/bootfs
└─sda2        8:2    1 29.8G  0 part /media/test/rootfs
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /


# バックアップ先のSDカードのデバイス名は「sda」
# バックアップ実行(SDカードのデバイス名は「sda」)としてバックアップ開始
sudo rpi-clone sda -f


このあといくつかの確認に"yes"と答えて、バックアップが開始され、およそ数分で完了します。

実際のログ

~ % sudo rpi-clone sda -f

  Destination disk partition /dev/sda1 is mounted on /media/test/D2AD-2131.
  The clone cannot proceed unless it is unmounted.
Do you want to unmount /media/test/D2AD-2131?  (yes/no): yes

Booted disk: mmcblk0 31.9GB                Destination disk: sda 31.3GB
---------------------------------------------------------------------------
Part      Size    FS     Label           Part   Size    FS     Label  
1 /boot   256.0M  fat32  --              1       29.1G  fat32  --     
2 root     29.5G  ext4   rootfs                                       
---------------------------------------------------------------------------
== Initialize: IMAGE partition table - forced by option ==
1 /boot               (50.0M used)   : MKFS  SYNC to sda1
2 root                (4.6G used)    : RESIZE  MKFS  SYNC to sda2
---------------------------------------------------------------------------
Run setup script       : no.
Verbose mode           : no.
-----------------------:
** WARNING **          : All destination disk sda data will be overwritten!
-----------------------:

Initialize and clone to the destination disk sda?  (yes/no): yes
Optional destination ext type file system label (16 chars max): rpi3-20240426


Initializing
  Imaging past partition 1 start.
  => dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=8 ...
  Resizing destination disk last partition ...
    Resize success.
  Changing destination Disk ID ...
  => mkfs -t vfat -F 32  /dev/sda1 ...
  => mkfs -t ext4 -L rpi3-20240426 /dev/sda2 ...

Syncing file systems (can take a long time)
Syncing mounted partitions:
  Mounting /dev/sda2 on /mnt/clone
  => rsync // /mnt/clone with-root-excludes ...
  Mounting /dev/sda1 on /mnt/clone/boot
  => rsync /boot/ /mnt/clone/boot  ...

Editing /mnt/clone/boot/cmdline.txt PARTUUID to use 884c6696
Editing /mnt/clone/etc/fstab PARTUUID to use 884c6696
===============================
Done with clone to /dev/sda
   Start - 20:06:06    End - 20:11:56    Elapsed Time - 5:50

Cloned partitions are mounted on /mnt/clone for inspection or customizing. 

Hit Enter when ready to unmount the /dev/sda partitions ...
  unmounting /mnt/clone/boot
  unmounting /mnt/clone
===============================