先日、MacBook Pro が起動しなくなりました。救出ボリュームから起動したらSSDが認識されていません。そうMacBook Pro 13-inch (Early 2011) に Fusion Drive を搭載したら BootCamp 作れなくなった話 - backyard of 伊勢的新常識でも書いた通り、Fusion Drive にしていたので、SSDとHDDのどちらか片方が死んだら起動できなくなるのです。
ですので、TimeMachineを設定していたのですが、よくないことは続くもので、数日前から TimeMachine をマウントできておらず、この週末に直そうと思っていたところなのです。
最近は多くのデータをDropboxやOneDriveといったクラウド上に置いていたので、作業中だった夏コミの原稿を含めて無事だったのですが、問題は手元にしかないiTunesライブラリです。かれこれ15年近く育ててきたライブラリが一瞬で終了したわけです。
このままあきらめるわけにはいかない。SSDはもうマウントすらできなくなったFusion Driveはもう戻ってこないので諦めて、HDDだけの構成にしてMacBookを仮復旧。TimeMachine を救出することを考えて、なんとかデータの吸出しがはじまりました。
まだコピー中ですが、とりあえず手順のメモをかねて。
ディスクユーティリティを使う
一番最初に思いつくのは OS 標準のディスクユーティリティです。復旧ボリューム(Cmd-R押しっぱなしで起動)から起動した時にも使えます。簡単なものであれば First Aid をかければなおります。
しかし今回の場合は、コンソールには alignment error と出てそもそもディスク自体を認識してくれず、使うことができませんでした。
シングルユーザーモードで fsck_hfs を使う
次に試したのは、シングルユーザーモード(Cmd-S で起動)で fsck_hfs を使うことです。fsck_hfs -fy /dev/disk1s2
などを実行します。修復は試みられるものの、その後のリスキャンで引き続きエラーのままになってしまいます。
B-tree の再構築をする fsck_hfs -ypr /dev/disk1s2
というより強力なオプションも試しましたが、効果なし。
有償ユーティリティを検討する
では、有償ユーティリティではどうかど、Data Rescue の体験版試しました。
- 出版社/メーカー: アイギーク・インク
- 発売日: 2014/12/05
- メディア: USBメモリスティック
- この商品を含むブログを見る
終了までに 90 日とか出ました。さすがにそれはちょっと長すぎる…ただ、何か探しているような感じはあったので、中のデータはわりと無事なんじゃないかと思いました。
ちなみにこの手の記事ググってると「とりあえず DiskWarrior 使っとけ」って書かれてる場所が多かったのですが、体験版がなく本当に解決するか怪しいと思ったのでやめておきました。
- 出版社/メーカー: 亘香通商
- 発売日: 2015/01/29
- メディア: USBメモリスティック
- この商品を含むブログを見る
Windows から読もうとする
では、Apple 製ではない HFS+ の実装からであればと思い、Windows 用の HFS+ for Windows 8- file system driver | PARAGON Software Group をインストールした Windows で開いてみました。すると、中身を見ることができました!しかし、空のファイルが並ぶばかり。
WindowsのHFS+ドライバ入れてマウントできないTimeMachineをつないだらマウントできた!!!!とおもったらこれ pic.twitter.com/4hUfMPaQdn
— いせ C90日曜西f-04b (@iseebi) 2016年8月11日
しかし、データは生きてるという謎の確信を持ちました。
Ubuntu から読み出す!
では、同じ *nix である Ubuntu からではどうか。仮復旧したMacBookにVirtualBoxを導入して、Ubuntuをインストールします。Ubuntu Desktopでは特に追加作業なく、HFS+ボリュームを読み込み専用でマウントすることができました。
しかしながら、Windows のときと状況は同じで、空のファイルが並ぶばかりでした。
であれば、この状態で何かできるはず!そう思って Ubuntu read TimeMachine
でググったら…!出てきたのがこのフォーラム記事!
Accessing mac time machine backup from Ubuntu
どうやら、ドライブルートの .HFS Private Directory Data\r
というディレクトリに実態があり、空ファイルはそのありかを示しているだけ、ということらしいです。
嬉しいことに、そのあたりをうまいことやってくれる copy-from-time-machine.sh というスクリプトを公開してくれています。
Copy data from a Time Machine volume mounted on a Linux box. · GitHub
これを、以下のように実行します。
$ ./copy-from-time-machine.sh (復元したい backupdb 内のフォルダ) (データの展開先)
たとえば、僕の場合は、VirtualBox のこういう感じでやりました。
$ ./copy-from-time-machine.sh /media/[ubuntu_user_name]/[disk_name]/Backups.backupdb/[mac_name]/[date_folder_name]/Machintosh\ HD/Users/[mac_user_name]/ /media/[virtualbox_sf]/tmrestore
あ、VirtualBox の権限はこういう感じのケアが必要らしいので要注意。
Virtual Box 共有フォルダの権限 | Ubuntu初心者の集いブログ
すると、無事復元が始まりました!
Windowsでドライバ入れたらマウントできるけど変なファイルしかない
— いせ C90日曜西f-04b (@iseebi) 2016年8月12日
→LinuxであればとUbuntuにつなぐも同じ
→Ubuntu read TimeMachine で検索するとスクリプト発見
→うまく読み込み開始された! pic.twitter.com/50xhIPfa6a
CocoaPods の Master Repo とかコピーしだして辛い感じだったので、クイックハックで Music フォルダ以下のみに限定したり、iOS のアプリは別にもういいからスキップしたりとかそのあたりの調整をしつつ、うまくデータを抽出しています。
やはり、TimeMachine だけでは万全じゃないですね。今後はもっと他の方法でもバックアップしていきたいと思います。