日記とか、工作記録とか

自分に書けることを何でも書いてゆきます。作った物、買ったもの、コンピュータ系の話題が多くなるかもしれません。

Raspberry piのバックアップとリストア

Raspberry piの普段のメンテナンスの話題の続きです。

自作のプログラムは、無くなったら二度と手に入らない大事なデータです。もう一度作ればいいじゃないか、などというのは作ったことが無い人が言うことで、再度同じ物を作るのはほとんど不可能なくらい大変なことです。そのくらいなら新しいなにかを作る方がましってものです。

というわけで、今回はRaspberry piに含まれている全てのデータをバックアップする方法について書きます。多くの人がWindowsパソコンを持っていると思うので、今回はWindowsマシンにバックアップする方法を紹介します。

バックアップの作成

Raspberry piを停止する

SDカードのバックアップを取るためにRaspberry piを停止します。Raspberry piの公式ページでは、ddコマンドを使った方法が紹介されているのですが、これはOSが動いたままでバックアップする方法として説明しているようです。動いている状態で取得したシステムバックアップは、戻しても正常に動かないことがあります。より確実な方法としてはバックアップの前に停止しておくことをおすすめします。

pi@raspberrypi:~$ sudo poweroff

Broadcast message from root@raspberrypi (pts/1) (Sun Jan  3 14:47:46 2016):
The system is going down for system halt NOW!
pi@raspberrypi:~$ Connection to pi closed by remote host.
Connection to pi closed.
WindVoice $ 

SDカードを抜き、Windowsマシンに接続する

f:id:WindVoice:20160103145023j:plain
Windowsマシンにはカードリーダーがついています。安い物がたくさん出ていますが、私が使っているのは以下の製品です。

Win32 Disk Imagerを使う

Windows以外の環境で作られたファイルのシステムバックアップを取るときは、SDカード全体を「イメージ」として保存しておくのが良いです。バックアップが取れたように見えても、あとで戻すときにOS(Rasbian OS)のフォーマットで戻さなければ機能しないからです。WindowsでSDカードのイメージを取るにはWin32 Disk Imagerが使えます。

このサイトからインストーラをダウンロードしてインストールしたあと、スタートメニューからWin32DiskImagerを右クリックして「管理者として実行」を選択します。

使い方は以下の通りです。

f:id:WindVoice:20160103153003p:plain

1. Image Fileの欄に、出力先のファイル名(普通は新しいファイル名)を指定する
2. Deviceの欄で、SDカードのドライブ名を指定する
3. Readを押してバックアップが完了するのを待つ

待ち時間は、SDカードと、カードリーダーの性能によりかなり違います。私の場合は16GBのSDカードを読み取るのに13分30秒ほどかかりました。なお、こういったディスクイメージは情報の圧縮が可能です。7zip等のソフトで圧縮しておけば、だいぶ小さくなります。私の場合は14.5GBのファイルが7z形式で4.04GBまで圧縮できました。

リストア

リストアするときは逆の手順で実施します。

1. SDカードを差し込んだカードリーダーをWindowsに接続します。
2. Win32 Disk Imagerを使ってImage Fileにバックアップファイルを指定、DeviceにSDカードを指定します。
3. Writeボタンを押してイメージを書き込みます。

リストアすると、それまでSDカードにあった情報は全て無くなりますので注意が必要です。

まとめ

バックアップは難しくはないのですが、正直ちょっと面倒ですよね。頻繁に開発するときは毎週くらい、ほとんど変化が無いときは月一度くらいの実行がいいのではないでしょうか。

Raspberry Piスターターパック (Pi2 用Standard)

Raspberry Piスターターパック (Pi2 用Standard)