2016年4月20日水曜日

別のMacに接続したHDDへTimeMachineバックアップした場合の復元方法

TimeMachineバックアップで簡単なのは、Apple製品に囲われること、つまりTimeCapsuleをWiFi APとして使い、それに内蔵されたHDDをTimeMachineバックアップの対象とすることなんでしょうが、それにはお金がかかるので、別のMacがTimeMachineバックアップにしているHDDにファイル共有で相乗りしたいと思う人も多いのではないかと思います。

このときですが、普通にFinderからリモートドライブをマウントすると、SMB(Windowsファイル共有)でマウントされてしまうので、TimeMachineバックアップするときは、AFPでマウントしないと、権限が違うという理由で、そもそもTImeMachineバックアップが作成できません。マウスクリックでやる方法はわかりませんが、明示的にafpを指定してあげれば大丈夫。FinderからCmd-Kで「afp://マシンのドメイン名/保存先」のように。

このあと、TImeMachieをONにすれば、バックアップが始まります。

すると不思議なのは、ローカルHDDへのTimeMachineバックアップは、そのまま普通にファイルシステムとして見えて、バックアップ先のファイルを普通にコピーできるのに(ACLの属性はあれですが)、ネットワークでマウントした場合には、バックアップそのものは、マシンごとにひとつのsparsebundleつまりフォルダになっていて、おなじみInfo.plistなどもそこにはあります。そこにあるデータはなんだかフラグメントされたデータファイルの塊であって、ファイルとして見えません。

それで、リストアできるのか心配なので、念のためtarballを自分で作ってGoogle Driveにあげておいたりしたのですが、杞憂でした。

1回目の修理のときにGeniusに尋ねたら、「ファイルシステムとしてマウントすると普通のファイルに見えるんですよ」とのこと。実はこの説明はひとつだけはしょっているところがあるんですが、後述します。

さて、いったん初期化されたマシンからリモートドライブ上のTimeMachineバックアップで復元する方法ですが、以下の手順となるようです。(参考
  1. Cmd-Rで起動して、リカバリモードに入る
  2. ターミナルを起動して、リモートドライブをマウントし、おまじないをする。
  3. すると「TimeMachineバックアップ」という名前で見えるようになる
  4. ターミナルを終了して、通常のリカバリ手順に入る
結局、ターミナルでコマンドラインを入力するのに慣れていないとちょっとつらい、ということです。コマンドライン無理な人はTimeCapsule買うがいい(と、突き放してみる)。

さて、参考サイトをみながらやった手順を以下に記しておきます。ご参考まで。
  1.  リカバリモードから[ユーティリティ]→[ターミナル]で、ターミナルを起動する
  2. rootのコマンドプロンプトが出るので、管理者(シングルユーザモード?)ということがわかる
  3. ネットワークを接続しておく(やはり有線が早くて良いけれど、WiFiの設定はこの時点でもできる)
  4.  以下のコマンドで、まずリモートドライブをマウントする
    • mkdir /Volumes/TimeMachine
    • mount_afs afp://ユーザ名:パスワード@マシン名/保存先 /Volumes/TimeMachine
  5. すると、/Volumes/TimeMachine以下に、バックアップしたマシン名のsparsebundleフォルダが見えるので、以下のコマンドで普通のファイルに見えるようにします
    • hdid /Volumes/TimeMachine/バックアップしたマシン名.sparsebundle
  6. ターミナルをexitして、Cmd-Qで終了すると、起動時のメニューになるので、「TimeMachieバックアップからリストア」に入る
  7. 「TimeMachineバックアップ」の名前があるので、それをクリックして選択し、先に進む
ということでした。hdidがキモになるコマンドだ、ということですね。で、man hdidすると、backward comatibilityのためにのみ存在するコマンド、とかあって、将来的にどうなのかわからないですけれど、OS X 10.4の頃のhdutilコマンド(現存しない模様)の機能を切り出したものだということで、必要性がある限りは残るんでしょう。El Capitan時点ではまだあります。