Time MachineのバックアップをNAS上に保存する

投稿: 2009年8月14日

Twitter上では騒いでいるので、Twitterを使っている人にはご存じの方も多いと思うが、最近MacBookを入手した。入手、といっても購入したわけではないのだが、それはまた別の話ということで。で、いろいろと試しているのだが (またその「いろいろ」についてもいずれ書くことにするが) 、訳あって早めにバックアップ体制を作る必要があったので、Mac OS X 10.5 (Leopard) 標準の機能であるTime Machineを試してみた。基本的に便利そうなものの、バックアップを保存する先がそのMacに直接接続されている外付けのハードディスクか、アップルが売っているタイムカプセルという無線LANのアクセスポイント機能 (802.11Nらしい) 内蔵のNAS以外には指定できないということが分かって大変がっかりした。

このTime Machineというバックアップ機能、1時間に1度、いわゆる増分バックアップをとってくれるという、ちゃんとつかえればそれだけで安心感が随分と増すようなものだ。しかし、だとするとラップトップに始終外付けのハードディスクを接続した状態にしておかないといけないわけで、これは実に邪魔くさい。かといって、それだけのためにタイムカプセルを買えるような余裕は、残念ながら今の僕の財布にはない。ということで、自然な流れでどうにか既存のNASにバックアップを保存できないものだろうかという考えに至り、あれこれ調べてみた。

結論から言うと、NASをバックアップ先に指定することは可能である。以下、そのための手順とはまりやすいポイント (というか僕がさんざんはまったポイント) を書いておく。

NASをバックアップ先に指定できるようにする

まず、標準状態ではTime Machineのバックアップ先としてNASを指定できないので、この問題を解決する。この設定を変更する目的のスクリプトなどもあるが、基本的にはターミナルを開いて以下を実行すればよい:

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

これで、「システム環境設定」のTime Machineの設定の中のバックアップ先を指定するダイアログにおいて、NASも指定できるようになる。この際、対象のボリュームがマウントされていないと、たぶんこのダイアログにそのボリュームが出てこないので、予めそのボリュームをマウントする (ファインダーで開く) 操作をしておいた方がよいだろう。

バックアップの実態を保存するためのsparse bundle disk imageを作る

さて、バックアップ先を指定すると初回バックアップまでのカウントダウンが始まる。そしてそれが終わると「バックアップの準備」が始まり、しばらく準備をした後に失敗する。これは、バックアップの実態を保存するための場所をNAS上に作るのに失敗するためだと思われる。が、なぜ失敗するのかは分からない。この問題を回避するためには、まずローカルでその「保存用の場所」を作り、それをNASにコピーするという方法をとる。その手順は以下の通り:

  1. ディスク・ユーティリティを開く (「アプリケーション」→「ユーティリティ」にある)
  2. メニューの「ファイル」→「新規」→「空のディスクイメージ」を実行 (command+option+nでも同じ)
  3. 以下のように設定:
    • 「名前」に、[ホスト名]_[有線ネットワーク・インタフェースのMACアドレス]を指定 (「ホスト名」はそのMacにつけられている名前、「有線ネットワーク・インタフェースのMACアドレス」は、実際のMACアドレスからコロン (:) を抜いて全て小文字にしたものを指定する。従って、たとえば host_00aa11bb22cc のようになる。)
    • 「場所」に、デスクトップなどローカルの場所を指定する (ローカルであればどこでもよい)
    • 「ボリューム名」に適当な名前を指定 (何でもよいが ``Time Machine'' などとしておけば分かりやすい)
    • 「ボリュームサイズ」に、NASの空き領域を考慮して、バックアップしようとしているディスクが十分保存できるサイズを指定
    • 「ボリュームフォーマット」、「暗号化」は、それぞれ「Mac OS拡張 (ジャーナリング)」、「なし」を指定 (デフォルト)
    • 「パーティション」に「ハードディスク」を指定
    • 「イメージフォーマット」に「スパースバンドルディスクイメージ」を指定
  4. 「作成」をクリック
  5. できたディスク・イメージをバックアップ先のボリュームに移動 (ディスク・イメージ作成直後には、そのイメージがマウントされている場合があるので、必ずアンマウントしてから移動する)

補足 1: 上記でホスト名とMACアドレスからなる名前を間違ってつけるとバックアップが失敗する。Time Machineが何というファイル名を期待しているのかは、「バックアップの準備中」にバックアップ先のフォルダに作成される一時ファイルの名前を確認することで知ることができる。たとえば、上記の例のようにホスト名がhost、MACアドレスが00:AA:11:BB:22:CCの場合、``._host_00aa11bb22cc.tmp.sparsebundle'' というファイルが作られる。 (このファイルは、lsコマンドなら -aオプションがないと、またWindowsのエクスプローラーなら隠しファイルも標示する設定になっていないと標示されない。) すなわち、作るべきディスク・イメージの名前はこのファイル名の先頭の ``._''と最後の方の ``.tmp'' を取り除いたものになる。上記ディスク・ユーティリティの設定の際に誤った名前をつけても、後でファインダー上でリネームすることが可能。

補足 2: sparse bundle disk imageにおける「ボリュームサイズ」は、そのディスクの最大のサイズであって、作成時のディスク・イメージのサイズではない。この形式の場合、最低限必要なサイズでディスク・イメージを作成し、その後必要に応じてディスク・イメージのサイズを増加させていくようになっているようだ。したがって、ローカルのハードディスクの空き容量以上のサイズを指定しても、 (よほど大きなサイズならば別だが) 問題はない。 (僕が128GBを指定した時にできたディスク・イメージのサイズは1GBに満たない程度だった。) ディスク・イメージ作成後にサイズを変更することもできるようだが、二度手間になるので作成時に適切な値を指定する方がよいだろう。また、VoiceOverを使っている場合は、作成後にサイズを変更する画面の操作が分かりにくいという問題もある。

バックアップを実行

ここまでできれば準備完了である。メニューの「今すぐバックアップを作成」を実行すればよいはずだ。もしうまくいかない場合は、念のためにバックアップ先を指定し直してみるとよい場合もあるようだ。

はまったポイント

  1. MACアドレス: 現在のネットワーク接続に使われているのが無線インタフェースであっても、指定するべきなのは有線インタフェースのMACアドレスである。無線の情報を見ていても、MACアドレスが表示されているタブのラベルは ``Ethernet'' なので分かりづらい。 (という言い訳)
  2. ボリュームフォーマット: sparse disk imageと sparse bundle disk imageは似て非なるものである。作成されるディスク・イメージの拡張子 (sparse bundle diskの方は実は実態はディレクトリのようなので「拡張子」というのは不正確だが) が違うので、うっかり間違っても容易に確認できる。 (はずなのだがそれを知らないと間違いに気づかない)
  3. 作成されたディスク・イメージがマウントされた状態でバックアップを始めると失敗する (らしい)

ということで、ちゃんとやってるはずなのにうまくいかない......、という場合は、とりあえず上述の一時ファイルの名前と作成したディスク・イメージの名前を比べてみると良さそうだ。 (僕はそれでようやく上のポイントの1と2に気づいた。)