RaspberryPiのバックアップ

RaspberryPiも色々設定が進んできたこともあり、そろそろバックアップもとっておかなければと思い、実施しました。

先日某S社のnasneのHDDが故障してしまい、突然来るHDDの故障に改めてバックアップの大切さを身にしみたところでした。
しかし、きちんとした製品なのに1年足らずで故障するなんて、どんな調達管理しているんでしょうかね?危なくてもうS社のHDD商品は買えませんねぇ‥‥。

まぁそれはそうと、RaspberryPiの大事なデータが入っているSDカードも構造的には読み書きの限界があり、ビットエラーは表面化しないまでも徐々に増えていって、HDDやSDカードではすぐにファイルが壊れないようにリカバーしています。ただビットエラーは完全にゼロではなくある程度存在しているもので、それが徐々に増えていき、リカバーできなくなって初めて、突然ファイル破壊という形で表面化するものと考えられます。(まぁ1年やそこらで徐々に増えたビットエラーが表面化することはないと思いますが) 

RaspberryPiも、転ばぬ先の杖ということで、バックアップすることにしました。

linuxのバックアップは人それぞれですが、おそらく次のどれかでやっているんじゃないでしょうか。

  • tarによるバックアップ
  • ddによるバックアップ
  • dumpによるバックアップ


tarはもともとtape archiveの略でも有るとおり、その昔unixの補助記憶媒体がテープの頃にバックアップするためのコマンドです。元々の目的はどうあれ、いまやarchiveのスタンダードで便利に使えていますが、バックアップの単位がファイル(ディレクトリ)単位です。/(ルート)以下すべてバックアップすればフルバックアップとしてそれで対応できるのですが、/devの下やlinkまでもファイルとしてバックアップしてしまい、細かく設定しないと、よけいなファイルがバックアップされてしまいます。

ddですが、ファイルに関係なくビットイメージをそっくりそのままファイルにしてしまうので、ある意味万能なバックアップ方法なのですが、エラーまでコピーしてしまうという弱点があります。長年使う上でビットエラーが発生して、それをファイルとして見せる際にローレベルのドライバがそのエラーのセクタを使わない設定をしていたとしましょう。ddだと読み込んだそのものをファイル化するので本当にエラーが有った媒体には意味があった”使わないセクタの設定”もそのままコピーされて、新たにコピーした先では、前の”使われないセクタの設定”も引き継ぎ、正常なセクタにもかかわらずエラーのレッテルをはられて使われなくなります。代を重ねるごとに積み重ねられ、直ることは有りません。いくら簡単で便利な方法だとしても気持ちが悪いです。

というわけで、私はよほどでもない限り、dumpでバックアップとることにしています。dump(とrestoreのセット)は、ext2派生のフォーマットでは非常に使いやすいと思います。デバイス単位(/dev/XXX)をファイルとしてバックアップできるし、フォルダやリンク情報は個別にバックアップされるので、restoreしたときにはリンクはリンクとして再現されます。

私が実際にRasberryPiのバックアップをとった手順は以下です。


  • RaspberryPiの起動SDカードを他のlinuxに接続する
    我が家では、デスクトップPCにインストールしているdebianを使いました。玄箱だとEMモードの代わりですね。このデスクトップPCのUSBに、アダプタを介してRaspberryPiのSDカードを挿します。tail /var/log/syslogで確認すると、RaspberryPiのSDカードの構造は、第一パーテーションと、第二パーテーションの二つから成っています。

    RaspberryPiでmountで確認してみると、第一パーテーションは/bootに相当し、FATのパーテーションです。ここにMBR相当の情報が含まれているようです。ただFATはdumpではバックアップできません。となるとこの第一パーテーションをMBRごとコピーするとなればddしかないのですが、よく見ると、RaspberryPiを最初にisoからインストールした際とファイルが全く同じです。
    d0222779_20465013.jpg

    updateやupgradeをしたところで、結局kernelを変えなければ、この/boot(第一パーテーション)は変わらないと見て良いでしょう。

    第二パーテーションは、/boot以外全てここに入っていてext4のようなので、これはdumpでバックアップできます。

  • dumpでバックアップ
    もしdumpをインストールしていなければ、debianならば、apt-get install dump restoreでインストールします。(restoreもどうせ使うのでついでにインストール)

    dumpでバックアップをとるには以下を実行します。
    dump -0uf (ファイル名) /dev/sda2(RaspberryPiのSDカードの第二パーテーション)

    dumpのオプションの-0(ゼロ)は、フルバックアップの意味です。私はどうせ世代管理(前回との差分を定期的にバックアップして管理する)はしないので、常にフルバックアップです。世代管理しないのであれば、オプションのuも不要ですね。fはその後にファイル名、ということですね。
    機種にも夜と思いますが、私は16GBのSDカードで終わるまで数十分はかかりました。


  • restoreで展開
    バックアップしたものをSDカードに戻すこともあるでしょう。(緊急の場合などが多いので、できれば戻さなければならない状態には当たりたくありませんが)

    dumpの時と同様、他のlinux機を使いSDカードに書き込みます。
    重要なのは、restoreするには書き込むデバイスをマウントしなければならないことです。dumpとrestoreは一組で使うようなものですが、dumpの方は、読み込む対象のデータをデバイス毎に指定できますが、restoreはそのデータを書き込む先としてデバイスで指定できません。もっと言うと、指定する方法がなく、展開する先はカレントディレクトリになります。

    具体的には、上記のコマンドで作成したファイルを使って、まっさらなSDカードをバックアップをとった時点のRaspberryPiのSDカードとして復活させたい場合は次の手順で復活できます。


    1. RaspberryPiを最初に起動したSDカードを作る要領でSDカードをフォーマットする。これで/boot領域を作ります。

    2. RaspberryPiのSDカードにバックアップデータを展開する
         mount /dev/sda2 /ext (RaspberryPiのSDカードの第二パーテーションを/extなどにマウントする )
         cd /ext
         restore -rf (ファイル名フルパス)

    3. RaspbeyyPiにいれて動作確認


とりあえず、kernelさえかえなければ、バックアップ時点のSDカードを複製し、使えるようになります。
[PR]
by tkn384 | 2014-07-21 23:31 | Raspberry Pi


今の好きなことは、暇な時いじる玄箱とか家電とか


by tkn384

プロフィールを見る
画像一覧

カテゴリ

全体
家電
玄箱
電子工作
Raspberry Pi
未分類

以前の記事

2014年 09月
2014年 08月
2014年 07月
2014年 06月
2014年 03月
2013年 08月
2012年 05月
2011年 05月
2011年 04月
2011年 03月
2011年 02月

フォロー中のブログ

メモ帳

最新のトラックバック

ライフログ

検索

タグ

その他のジャンル

ブログパーツ

最新の記事

玄箱サーバ死亡
at 2014-09-23 16:39
初代玄箱USB増設
at 2014-08-31 14:05
RaspberryPiのバッ..
at 2014-07-21 23:31
Windows7とWindo..
at 2014-07-20 12:16
Windows7のPCを買い..
at 2014-07-06 01:48

外部リンク

ファン

記事ランキング

ブログジャンル

ネット・IT技術

画像一覧