Raspberry Piのデータをバックアップする

SDの容量はぼちぼち大きいですが、実際に使用しているデータサイズは小さいのでSD丸ごとイメージバックアップはしない方向にします。

Advertisement

Raspberry Piのデータバックアップ

Raspberry PiはシステムストレージにSDカードを利用していて耐久性に難があるので、バックアップしておかないといざというときに困る可能性があります。

バックアップする際にSD丸ごとフルイメージバックアップをする方法もありますが、それだとSDカードの容量分ストレージを消費してしまうので今回はできるだけ容量を消費しないようにします。

また、Raspberry Piを稼働させたままRaspberry Pi本体でバックアップできるようにします。

バックアップ手順

手順はこちらのサイトを参考にしました。簡単に説明するとパーティション1などはセクタ単位でバックアップしてパーティション2などはdumpコマンドでバックアップします。

デバイスとパーティションの確認

sudo fdisk -l

これを実行してバックアップ対象のデバイスとパーティション、セクタ数を確認します。

パーティション2より前のセクタまでをバックアップ

mkdir /mnt/hdd/RPiBackup/`date '+%Y%m%d'` -p && sudo dd if=/dev/mmcblk0 of=/mnt/hdd/RPiBackup/`date '+%Y%m%d'`/boot.bin bs=512 count=532479

自分の環境に合わせてコマンドを修正してddコマンドでバックアップします。

私の場合は外付けHDDのマウント先に日付のディレクトリを作成し、バックアップ対象のRaspberry Piのシステムストレージがmmcblk0というデバイスで、先程確認したパーティション2よりひとつ前のセクタ数を指定しています。

パーティション2をバックアップ

sudo dump -f /mnt/hdd/RPiBackup/`date '+%Y%m%d'`/data.dump /dev/mmcblk0p2

自分の環境に合わせてコマンドを修正してdumpコマンドでバックアップします。

sudo apt-get install dump

dumpコマンドがインストールされていない場合はインストールしてください。

これでバックアップ完了です。

リストア手順

デバイスとパーティションの確認

sudo fdisk -l

これを実行してリストア先のデバイスを確認してください。ここで間違えると大事なデータが消えます。

パーティション2より前のセクタまでをリストア

sudo dd if=/mnt/hdd/RPiBackup/20200101/boot.bin of=/dev/sdb

自分の環境に合わせてコマンドを修正してddコマンドでリストアします。

パーティション2を再作成

sudo parted /dev/sdb
rm 2
mkpart primary ext4 532479s -1s
q

自分の環境に合わせてパーティション2を削除し、空いているディスクスペースをすべてパーティション2に割り当てます。

sudo mkfs.ext4 /dev/sdb2

パーティション2をフォーマットします。

パーティション2をリストア

mkdir mount
sudo mount /dev/sdb2 mount
cd mount

適当なところにマウントし、

sudo restore -rf /mnt/hdd/RPiBackup/20200101/data.dump

リストアします。

アンマウント

cd
sudo umount mount

アンマウントしてリストアしたSDカードを取り外します。

これでリストア完了です。リストアしたSDカードを本体に差し込んで起動してください。

Advertisement

これでSDカードが大変なことになってもデータを戻すことができます。

これを定期実行するようにしたり、大きな変更が発生したときに実行するようにしておけば安心です。

Raspberry Piのデータを自動で定期バックアップする