まえがき
スマホを再起動すると、SDカードに保存していた写真データが消えていました。電源断でいってしまったようです。SDカードのフォーマットで8割復活しました。
ところで、ラズパイのHDDもSDカードです。
2019年にラズパイの3b+モデルを購入し安定的に作動していましたが、これを機にバックアップ機構を作ることにしました。
ラズパイ4モデルでも可能です。
バックアップ方法検討
最も手数が少ない方法1を採用です。
方法 | 概要 | コメント |
---|---|---|
1 | SDカード(差し込み式のUSBリーダー)にバックアップ | rpi-cloneを使う方法です。すべてがCUIで完結し、ラズパイが壊れてもSDカードを差し替えるだけです。 |
2 | USBメモリにバックアップ | ラズパイが壊れた時にUSBからブートするよう設定処理が必要です。ddコマンドなどを使って操作するので慎重に行う必要があります。ラズパイ4だとより簡便になったようです。 |
3 | WindowsでMiniTool Partition Wizardを使ってバックアップ | Windowsのアプリで頑張る方法ですが、一番手間が多いです。バックアップ毎に毎回ラズパイからSDカードを抜く必要があります。 |
使うもの
上で書いた「SDカード(差し込み式のUSBリーダー)」とは、以下のようなmicroSDカードリーダーとUSBメモリーが一体化した一品です。 Amazonで333円でゲットしました。さすがバッファロです。
これにはSDカードはついていないので、別途購入します。
ラズパイと同じ16GBのSDカードが家にありましたのでそれを使います。
そして前者に後者をドッキングさせます。以下のように差し込むところの意外性にちょっと驚きます。
実施
SD Card Copierでラズパイのバックアップ(クローン)もしくは、rpi-clone + cronで毎夜1時にバックアップする - あとをしNOTE こちらのサイトの通り実行しました。 すべてpiユーザで実行しています。
買ってきたUSBリーダーは後にして、まず挿入前の状態です。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 1.6G 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part ├─mmcblk0p6 179:6 0 256M 0 part /boot └─mmcblk0p7 179:7 0 13G 0 part /
$ df -m ファイルシス 1M-ブロック 使用 使用可 使用% マウント位置 /dev/root 12961 4909 7372 40% / devtmpfs 404 0 404 0% /dev tmpfs 437 0 437 0% /dev/shm tmpfs 437 28 409 7% /run tmpfs 5 1 5 1% /run/lock tmpfs 437 0 437 0% /sys/fs/cgroup /dev/mmcblk0p6 253 48 205 19% /boot tmpfs 88 1 88 1% /run/user/1000
16GB(おそらく実質は15GB)のSDカードなので、大体10GBくらい使っています。
やっていきます。
gitからrpi-cloneモジュールを落としてきて、コマンド実行できるようにsbin配下に置きます。
$ git clone https://github.com/billw2/rpi-clone.git
$ cd rpi-clone
$ sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
ラズパイをシャットダウン(sudo shutdown -h nowコマンド)し、コンセントを引っこ抜き、USBを差し込みます。
USBポートは4口あったのでどこにするか迷います。
また電源を差し込みます。勝手に起動します。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 15G 0 disk mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 1.6G 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part ├─mmcblk0p6 179:6 0 256M 0 part /boot └─mmcblk0p7 179:7 0 13G 0 part /
sdaパーティションが仲間に加わっています。
さて、あとはrpi-cloneを実行するだけです。
$ sudo rpi-clone sda
Initialize and clone to the destination disk sda? (yes/no): ←yesを入力 Optional destination ext type file system label (16 chars max): ←Enter
22分かかりました。
おわりです。
sda配下に色々作られています。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 15G 0 disk ├─sda1 8:1 1 1.6G 0 part ├─sda2 8:2 1 1K 0 part ├─sda5 8:5 1 32M 0 part ├─sda6 8:6 1 256M 0 part └─sda7 8:7 1 13.1G 0 part mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 1.6G 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part ├─mmcblk0p6 179:6 0 256M 0 part /boot └─mmcblk0p7 179:7 0 13G 0 part /
毎夜3時に実行されるようcronを登録しておきます。
差分バックアップしてくれるようです。
$ sudo crontab -e
00 3 * * * sudo bash rpi-clone sda -q
実行ログは以下のパスにあります。
$ cat /var/log/rpi-clone.log
おわり
これで安心してラズパイを使い続けられるようになりました。 バックアップ処理失敗時に、Slackやgmailに通知するようにしたいですが、またの機会に。