以前作ったスマートロックですが、いろいろと改良してシステムのバックアップを取っておきたくなったので簡単にバックアップをとるための備忘録です。
ラズパイOSには標準でSDカードにシステムのバックアップを取るためのツールが用意されています。
以前はddでバックアップを取っていたのでこのツールが登場しただけで万々歳でしたが、GUIからでないと操作できないものなのでSSHからではやや面倒です。Xを飛ばそうか?とも考えたのですが、調べてみるともっと簡単なツールでバックアップが取れることが判明しました。
<参考>
方法はこちらの記事そのままです。
インストール
任意のディレクトリでGitからこちらのコマンドで「rpi-clone」をダウンロード
git clone https://github.com/billw2/rpi-clone.git
ダウンロード画面
Cloning into 'rpi-clone'...
remote: Enumerating objects: 180, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 180 (delta 0), reused 1 (delta 0), pack-reused 176
Receiving objects: 100% (180/180), 98.78 KiB | 2.06 MiB/s, done.
Resolving deltas: 100% (68/68), done.
ダウンロードの確認
ls
コマンドでディレクトリ内に
rpi-clone
が存在していれば成功です。
rpi-cloneディレクトリへ移動
cd rpi-clone/
中身の確認をすると
ls
以下のファイルが含まれているはずです。
LICENSE README.md rpi-clone rpi-clone-setup
以下のコマンドでファイルをsbinディレクトにコピー
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
インストール操作は以上です。
バックアップの準備
完了したら以下のコマンドで使えるストレージを確認します。
lsblk
ストレージが無い状態では以下のように表示されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 28.9G 0 part /
USBにバックアップ先のSDカードをセットします。
もう一度ストレージを確認します。
lsblk
ストレージが認識されると以下のように表示されているはずです。(古いラズパイシステムで使っていた8GのSDカード)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 7.5G 0 disk
├─sda1 8:1 1 256M 0 part /media/pi/BOOT
└─sda2 8:2 1 7.2G 0 part /media/pi/rootfs
mmcblk0 179:0 0 30.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.8G 0 part /
sdaが増えていることがわかります。
この「sda」がバックアップ先です。
バックアップ
バックアップ操作は以下のコマンド一発だけ。
sudo rpi-clone sda
必用があればいろいろと問われます。
Destination disk partition /dev/sda2 is mounted on /media/pi/rootfs.
The clone cannot proceed unless it is unmounted.
Do you want to unmount /media/pi/rootfs? (yes/no): yes
Destination disk partition /dev/sda1 is mounted on /media/pi/BOOT.
The clone cannot proceed unless it is unmounted.
Do you want to unmount /media/pi/BOOT? (yes/no): yes
Booted disk: mmcblk0 32.3GB Destination disk: sda 8.0GB
---------------------------------------------------------------------------
Part Size FS Label Part Size FS Label
1 /boot 256.0M fat32 -- 1 256.0M fat32 --
2 root 29.8G ext4 rootfs 2 7.2G ext4 rootfs
---------------------------------------------------------------------------
== SYNC mmcblk0 file systems to sda ==
/boot (50.0M used) : SYNC to sda1 (256.0M size)
/ (4.1G used) : SYNC to sda2 (7.2G size)
---------------------------------------------------------------------------
Run setup script : no.
Verbose mode : no.
-----------------------:
Ok to proceed with the clone? (yes/no): yes
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 c7f3dd05
Editing /mnt/clone/etc/fstab PARTUUID to use c7f3dd05
「バックアップを取るにはアンマウントが必用だけど、パーティションをアンマウントしていい?」ということと「バックアップとっていい?」とうことが問われています。
「yes」で続行しています。
バックアップが完了すると
Hit Enter when ready to unmount the /dev/sda partitions ...
と出るのでエンターを押すとバックアップは完了です。
最後にラズパイで起動の確認をしておきましょう。
※追記
バックアップ時にパーティションの分割容量の不足に陥った場合、Macでパーティションごと削除フォーマットする必用があったので、こちらの記事を参考にフォーマットしました。
<参考>
microSDカードをmacで初期化する(全パーティションを消す)