ひさびさにParallels上のWindowsを動かしたあとしばらくして、いつものようにTimeMachineが動きだした。でもなんかいつまでもかかってる。状況を覗いてみたら、5.6GB/7.8GBとか。なんだこれ。
ちょっと考えてみると、これは仮想マシンのディスクイメージに変更があったために、ファイルを丸ごとコピーしているからですね。ディスクイメージは巨大なファイルになりがちであり、仮想マシン内でのちょっとした変更でさえ、数GBのディスクコピーを生むことになります。差分バックアップとはどうみても相性が悪いですね。
んーむ。じゃあぼくがAppleで働くプログラマだったとして、この問題をどうやって解決するか考えてみます。
1: バイナリの差分をうまくとる
ふつうの解法。
バイナリファイルの差分を賢くとることのできるアルゴリズムがあればOK。
ぐぐってみると、たくさんありますね。Subversion, Rsyncでもつかわれている。
ただし、仮想マシンの中でのちょっとした変更でもディスクイメージの内容が大きく変わってしまうときつい。
2: 仮想ディスクの中身をケアした差分をとる
1の問題点を踏まえて。
ディスクイメージをマウントして、ディレクトリツリーのdiffをとる。
ディスクイメージのフォーマットを知っておく必要がありますね。
いいアイデアがないですね…
これじゃAppleでは働き口がなさそうです。
仮想化が流行してくると、こうしたことも課題になってきそうです。
それとも、もう既に研究がすすんでいたりするものでしょうか。
Mac miniサーバにFireWireでつなげた外部HDDをsinkにしてバックアップとるプランを立てて、1週間ほどうまくいっていた。リストアもできるようになったし。
しかし、昨日バックアップが成功しなかった。外部HDDでまた disk I/O errorになっていたから。またか!
このHDDは、もともとソフトウェアRAIDのスライスとして使っていたもの。でも、FireWireソフトウェアRAIDはなんかいまひとつ信頼性に欠けるなぁと思ってやめにしていた。んでも、中に入っているデータを移すのは面倒だったので、片肺運転状態にして1台だけで使っていた。それがまずかったのかしらん。
困ったものです。もう残りのHDDはないんだよな。
なんか自分はHDD壊し屋みたいだ。会社でもよくとばすしなー。別に稼働中にけとばしたりなんてことはしてないつもりなんだけど。
現在バックアップとれない状態になっているので、いまいきなりHDDがとぶと非常にまずいことになる。マーフィーの法則によると、こういうときに限ってディスクがとぶんだよな。早めに手をうたないと。
適当なNASボックスを買ってくるのが一番安心確実な気がしてきた。
壊れたHDDをあつめて、ハードディスクPCケースにでもするか…
ついにBackup.appからのリストア実験に成功した。
これまでの教訓から、バックアップをとったら、それだけで満足せずに、すぐリストアのテストもしておこうと思い、やってみた。
バックアップ構成
- 対象 : PowerBook 12″ の外部HDDに保存してあるホームディレクトリ
- 保存先 : ネットワーク越しにあるサーバの外部HDD
- 経路 : 無線LAN (w
テスト
まず、フルバックアップのパッケージからのリストア。これは問題なくいった。
つぎに、1週間分の差分がたまった差分パッケージからのリストア。これもうまくいった!
合計4GBくらいのものだったけど、3時間ほどで終了。
これで一安心といったところ。
しかしやはり無線LANは遅いので、実際にやるときはサーバの外付けHDDをひっこぬいてローカルコピーするのが現実的だろうな。
差分バックアップするときは、差分なのでそんなに量はなく、大した時間はとられない。
Backup.appで復元できなかったりひどい目に遭ったので、別の方法を探してみた。
お手軽なのは、rsyncでincremental backupするというもの。しかし他になにかないかと探していたら、rdiff-backupというものがあった。よりお手軽なバックアップができそうなもの。
さっそくiPhotoのライブラリをやってみるべとすると、
03126.JPG [Errno 63] File name too long:
なんていうエラーが出た。日本語を含むファイル名だからかな。
快調だなーと思っていた矢先にエラーになってしまって残念な気分。どうしようかな。やっぱり地道にrsyncかな。
さて、昨日HDDが飛んだので、今朝からバックアップからリストアしようとしている。
バックアップに用いているのはApple Backup.app 3.1 (v356)。Apple純正。インクリメンタルでバックアップできるので、使わなくなったiPod 20GBにホームディレクトリをフルバックアップしてた。
さて、いざリストアするべとやってみる。面倒なので、ホームすべてを対象にする。
…
復元に失敗しました。
なにーーーっっッ!!
何度やってもだめ。
そこでいろいろ対策を練ってみた。
1. そもそも大本がない
インクリメンタルバックアップなので、大本のファイルがあるだろうと踏んだのだけど、ない。
それでいいのか?だからリストアできないのではないか?
2. 部分的に
試しに、1ファイルだけリストアかけてみたら、できた!
複数ファイルもOK。
しかし、ディレクトリがあるとNG。
なぜ…
ファイルをすべて選ぶのは果てしなく面倒なのですがどうしたものだか。
そもそも、Backup.appはものすごくリソース食いだ。
CPUも90%使うし、メモリも400MB食ってる。ありえない。
そして落ちる。というか頻繁にクラッシュする。
これじゃらちがあかないので、明日Appleのサポートセンターに連絡してみよう。