Raspberry Piの完全バックアップ、外部マイクロSDカードへの自動バックアップ

今までRaspberry Piの重要なファイルを定期的にUSBメモリにバックアップしていましたが、これからは全ファイルを外部マイクロSDカードにバックアップしてSDカードが壊れた時も取り替えるだけで再開できるようにします。


完全バックアップに必要なもの

microSDHC/microSD対応リーダーライター
変換名人 microSDHC(最大32GB)/microSD(最大2GB)対応リーダーライター USB2.0(A平型オス)接続 超短&キャップ付 TF-USB2/M

Transcend microSDHCカード 16GB Class10
【Amazon.co.jp限定】Transcend microSDHCカード 16GB Class10 (無期限保証) Newニンテンドー3DS 動作確認済み TS16GUSDHC10E (FFP)

メーカーによってSDカード/マイクロSDカードの容量が若干異なりそれが原因でイメージファイルの書き込みに失敗する場合があります。

そのため今Raspberry Piで使っているSDカードよりも大きな容量のマイクロSDカードを購入してください。Raspberry PiでマイクロSDカードを使っているなら同じメーカーの同じものか、違うメーカーの場合は元の容量よりも大きな容量を購入して使用してください。

ちなみにmicroSDHCカードのことをマイクロSDカードと呼んでいます。気にするほどの違いはありません。

Raspberry Piのバックアップの下準備

Raspberry PiのSDカードを引っこ抜いてWin32DiskImagerを使ってSDカードのバックアップを取ります。

やりかたは下記で既に記載しているのでそこを参考にしてください。
Model BのSDカードをバックアップしてModel B+のマイクロSDカードにリストアして調整する

新しいマイクロSDカードにバックアップしたファイルを書き込みます。

マイクロSDカードをSDカードアダプタに入れて、Raspberry Pi Model BのSDカードスロットに差し込みます。Model B+の場合は、マイクロSDカードをそのまま差し込んでください。

Raspberry Piを起動します。
sudo raspi-config
1. Expand Filesystem
上記を選んで容量を拡張します。

Raspberry PiをShutdownしてマイクロSDカードを引っこ抜きます。

引っこ抜いたマイクロSDカードをUSBアダプタにつけてRaspberry PiにつなげているUSBハブにくっつけます。Raspberry PiのUSBポートに空きがあれば、そこにつけても構いません。もともとのSDカード/マイクロSDカードをRaspberry Piに差し込んでRaspberry Piを起動します。

とりあえずこれで完全バックアップの準備は整いました。

Raspberry Piをrsyncで同期する

rsyncを使ってRaspberry PiのデータをUSBアダプタにつけたマイクロSDカードへ同期させます。

rsyncについては下記で説明しています。
Raspberry Piでファイルサーバ、Part4 外付けハードディスクのバックアップ編

とりあえずrsyncが入っていない場合はインストールします。
sudo apt-get install rsync

ちなみに現在のRaspberry Piのファイル構成
df -h

Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.4G  3.0G  4.1G  43% /
/dev/root       7.4G  3.0G  4.1G  43% /
devtmpfs        239M     0  239M   0% /dev
tmpfs            49M  548K   48M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda1       230G   62M  218G   1% /media/hdd2
/dev/sdb1       294G   65M  279G   1% /media/hdd1
tmpfs            97M     0   97M   0% /run/shm
/dev/mmcblk0p1   56M  9.7M   47M  18% /boot
tmpfs            32M     0   32M   0% /tmp
tmpfs            16M     0   16M   0% /var/tmp
tmpfs            32M  564K   32M   2% /var/log
/dev/sdc1        56M  9.7M   47M  18% /media/usb0
/dev/sdc2        15G  3.0G   11G  22% /media/usb1

cd /
ls

bin       dev   lib         mnt   root               sbin     sys  var
boot      etc   lost+found  opt   run                selinux  tmp
boot.bak  home  media       proc  sbin
hdd1とhdd2は外部ハードディスクです。USBアダプタをつけたマイクロSDカードはusb0とusb1で認識されています。そのうちusb0はboot用の領域なので、usb1がバックアップ先になります。

USBアダプタをつけたマイクロSDカードが認識されていない場合、USBメモリでRaspberry Piをバックアップする+WordPressを読んでください。USBメモリのマウントの仕方を載せています。USBアダプタをつけたマイクロSDカードも実質的にはUSBメモリとして認識されるので同じようなやり方が通じるはずです。

同期しない/同期してはいけないディレクトリを設定します。
cd /
sudo vim rsync-exclude.txt

/proc/*
/sys/*
/dev/*
/boot/*
/tmp/*
/run/*
/mnt/*
/var/tmp/*
/var/log/*
/media/*

次にrsyncを使って実際に同期を行います。
sudo rsync -aEv --delete-during --exclude-from=/rsync-exclude.txt / /media/usb1/
rsync-exclude.txtで除外リストを読み込んでいます。
/media/usb1/は人それぞれ若干変わる可能性があるので自分で調べましょう。他にUSBメモリを指している場合、usb2とかusb3になっている可能性があります。

問題なく完了すると、
sent *** bytes received *** bytes *** bytes/sec
total size is *** speed up is ***
というようなメッセージが出て完了です。

/media/usb1/の中身を確認してrsync-exclude.txtが入っていれば同期ができています。

最後にcrontabで同期する時間を設定して設定完了です。
sudo crontab -e
0 4 * * 0  rsync -a --delete-during --exclude-from=/rsync-exclude.txt / /media/usb1/

rsyncのオプションでvはメッセージを表示するやつだから削除します。Eが必要なのか不要なのかわからないのですが、とりあえず削除してしまいました。

1週間に1度同期を行います。
日曜の早朝4時に同期を開始します。

普通のSDカード/マイクロSDカードの書き換え寿命は1万回くらいあるそうです。

読み込み・書き込み・削除などでバックアップ1回につき3回消費したとします。1日1回バックアップを取ったとしても、3333日、10年くらい持ちます。実際には16GBのマイクロSDカードに3GBのバックアップをとるので、寿命は5倍、50年くらい持ちます。

毎日バックアップをとってもいいのですが、基本的にデータの書き換えはあまり行わないので私の場合1週間に1度だけバックアップを取ることにしました。これで想定寿命が7倍になって、350年!どこかで計算を間違えていても私の寿命がなくなるまでは持つことでしょう。

バックアップ元のSDカードはサーバーとして毎日動いているので1日10回分消費したとして1000日、3年くらいの寿命になるかなと思います。

Raspberry Piの完全バックアップ、外部マイクロSDカードへの自動バックアップ” への1件のコメント
  1. 通りすがりです より:

    フラッシュメモリの寿命ですが、書き込み回数の考え方は残念ながらもっとハードで、FATフォーマットならば管理部というのがあり、どこに何バイトのファイルを書いても、管理部が更新されます。1バイト書いたあと反映させるためにクローズ、これを100回アペンドしたら、違う領域に書かれるので、各領域は1回しか書かれないかと思うのですが、実際は管理部の同じ箇所がファイルサイズが変わるたび100回こうしんされます。
    実際はそのようなログのような物を書くプログラムをヒートランさせると1日でどんなフラッシュも壊れます。

コメントを残す

メールアドレスが公開されることはありません。