DIY Time Machine Wallpaper / FHKE
QNAPのNASを使用していますが、最近TimeMachineバックップが成功しません。
TimeMachineには公式に対応しているNASですし、ファームウェアも現在最新の4.0.7です。でもMacがMavericksになってからは、特に調子が悪いような気がしています。
試行錯誤しているうちに、失敗の症状もバリエーション出まくりでわけわかんなくなんてきまして。初回だけは成功することもあれば、初めから固まることもあり。もう嫌気がさして3ヶ月くらいTimeMachineを止めてしまっていたのですが、先日
Windows機が突然死するという事態に出くわし、システムバックアップの便利さを痛感したため、やっぱりなんとかしてバックアップはとっておきたいと思った次第です。
QNAPのバカ。もう知らない。
そんなわけで、「TimeMachineサーバー」の機能は使わずに、フツーのNASとしての共有フォルダ、つまりAFPマウントとかして使っている領域にシステムバックアップを取るのをアレコレ試行錯誤した経緯です。つまりQNAPもTimeMachine非対応NASであるかのごとくいじって、システムバックアップとろう、という試行錯誤。
0. 下準備
調べてみると、バックアップ先にするディスクイメージ名の規則が決まっており、バックアップするMacのホスト名とMACアドレスが必要らしいので、用意しておきます。
蛇足ながら、ホスト名はターミナルで
$ hostname
で返される文字列です。
HOGE.local
だったらHOGEの部分。
MACアドレスはLANに接続しているネットワーク機器固有のアドレス。
$ ifconfig -a
で返される文字列に含まれています。
多くの場合、有線LANは“en0”で無線LANは“en1”になってるようですが、環境次第です。”01:23:45:AA:BB:CC”みたいな感じで記述されてます。
1. バックアップ先にするディスクイメージをつくる
リモートには直接イメージを作れないらしいので、まずはローカルのホームディレクトリとかデスクトップとか、適当な場所につくります。
こんな感じのコマンド。
$ sudo hdiutil create -size (SIZE) -fs HFS+J -type SPARSEBUNDLE -volname (VOLUMENAME) (HOSTNAME)_(MACADDRESS).sparsebundle
(大文字)のところは、環境固有の値になります。
- (SIZE) - イメージのサイズ。バックアップするMacの容量の1.5倍くらいがいいっていわれてました。
- (VOLUMENAME) - なんでもいいですが、この名前でイメージがマウントされます。’TimeMachine’とかすることが多い模様。
- (HOSTNAME)_(MACADDRESS) - ディスクイメージのファイル名。0.で取得したホスト名とMACアドレスを使います。MACアドレスは、’:’を抜いたものになります。
具体的にはこんなかんじになります。
$ sudo hdiutil create -size 256g -fs HFS+J -type SPARSEBUNDLE -volname TimeMachine HOGE_012345AABBCC.sparsebundle
これで、HOGE_012345AABBCC.sparsebundleなるディスクイメージファイルが作成されます。
2. ディスクイメージのマウント
1.で出来上がったイメージ、例でいうHOGE_012345AABBCC.sparsebundleをNASの共有フォルダに持っていきます。この辺はFinderでやりました。
QNAPユーザなら言わずもがなやもしれませんが、適当なNASの共有フォルダに移動させたのちに、作ったディスクイメージをマウントしてあげます。
私は通常SMBではなくAFPで使っていますが、“Public”って名前の共有フォルダの下に適当なフォルダを作ってディクスイメージを移動しました。
その後、移動先でイメージをダブルクリックします。すると1.で指定したVOLUMENAME、例でいうとTimeMachineという名前でイメージがマウントされます。
3. イメージをTimeMachine先のディスクにする
つぎに、非対応NASでTImeMachineするために、下記のコマンドを打ちます。
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
すると、あら不思議。「TimeMachine環境設定」の「ディスクを選択」に、従前のイメージがあらわれます。…となっていたハウツー記事があったのですが、私の環境では現れません。どうやら、この辺りはTimeMachineのバージョンなどによって違いがあるような気配です...。
もっと言えば、このコマンドはAFP(Appleのファイル共有)を使用する場合は不要と書いてある記事もありました。
さらにもっと言えば、0.のイメージ名をホスト名とMACアドレスで作成すること自体が、AFPの場合は不要って書いてある記事も見つけました。つまりイメージ名もなんでもいいんだと。
この辺、オーソライズされた情報が見つけられなかったので、必須なのかどうかはよく解りませぬが、今回は私がやったことを全部書いておこう…ということで書き添えます。
検証するモチベーションがもうないので...若い誰かがきっとやってくれる...後は頼んだ...
4. あらためて、イメージをTimeMachine先のディスクにする
tmutil
なるコマンドを使って、マウントしているイメージをTimeMachine先に指定します。
$ sudo tmutil setdestination /Volumes/(VOLUMENAME)
VOLUMENAMEは、1で指定したもの。例で言うとTimeMachineです。
もしここでエラーになった場合は、/Volumesの下を確認してみましょう。ダブルクリックなどしてマウントされたものは/Volumesの下にマウントされていきますが、名前がかぶっていたりすると、勝手にTimeMachine–1などと思いがけないものになってしまったりします。こうなったら今後のためにも、他とかぶらないような名前を付け直すしかなさそう。
うまくいくと、TImeMachine環境設定のバックアップ先ディスクとしてVOLUMENAMEがセットされた状態になってます。
…これって、TimeMachineどうこうっていうか、フツーにディスクイメージをマウントしているだけじゃないかという気がフツフツ。そんなところからも、ホスト名やMACアドレス云々はやはり要らないような気がするとです。
5. レッツTimeMachine
メニューバーから「今すぐバックアップを作成」してみます。
もし、途中で固まってしまった場合は…というか私はばっちり固まってしまったのですが、どうやらSpotlight機能のindex作成が悪さをしていることがある模様です。
sudo mdutil -i off /Volumes/(VOLUMENAME)/Backups.backupdb
とすると、index作成をオフにできるんですと。これでホントに固まってたのが動き出しました。びっくり。(...ってか、これは明白にバグじゃね?) 私はSpotlightを使ったことないですし、今後も使う気がないので丸ごとオフにする設定を探してみました。
/etc/hostconfig
というファイルに
SPOTLIGHT=-NO-
と書き加えればいい模様。ホントにオフになったのかどうかは分からないものの、それ以来変なことは起きてないので、それでいいやー。(だんだんとモチベーションが...)
6. その後、どうするの?
初回バックアップは終わったものの、今の状態はNASをマウントして、さらにディスクイメージをマウントしてある状態です。...これからどうなんのコレ?
ずっと家で使うようなiMacとかなら、マウント状態のまま運用しても問題なさそうですが、私はMacBook Airで持ち歩くのでマウント状態を維持できません。
試しに一度マウントを解除してみてTimeMachineを動かしてみると案の定、ディスク接続されるまで動かんよ的なことを言われる。...まぁ、そりゃそうです。
つまり、バックアップをするためには
- NASマウント
- イメージマウント
- 「今すぐバックアップ」!
のような手順が必要になるということです。
TImeMachineはONのまま放置しておくと一時間ごとというせわしなさでバックアップをとろうとするので、それよりは基本はOFFにしておいて、好きなタイミングでバックアップをとれるコレも悪くないのかしら。などと思ったりもして、これで使っていくことにします。
7. さらにその後
TimeMachineは順調に動くものの、バックアップとるときの3ステップが案の定邪魔くさくなってきました。そこでスクリプトを書いてみました。エラー処理も無いいい加減なものなので、とてもそのままは載せられませんが、ざっくりと
- mount_afp(NASをマウントして…)
- hdiutil attach(イメージをマウントして…)
- tmutil startbackup(今すぐバックアップ!)
- hdiutil detach (イメージをアンマウントして…)
- umount(NASをアンマウント)
などと実行していくようにすれば、ワンクリックで実行できるようにはなったので、これで良しとしようと思います。
ディスクイメージをコピーしちゃえばバックアップのバックアップ?も気軽にできますし、これはこれでステキな環境かもしれないと思いはじめていたり。