Macが壊れたときにTime Machineのバックアップにあるファイルをいくつかサルベージする
「きみが壊れた」
Macbookが壊れたのでこの後Apple Storeに行ってくる予定なのですが、その前に代替機からNAS上にTime Machineでバックアップしたファイルをいくつか確認しておきたくなったので、(また壊れたときのために)やり方をここにもメモしておきます。
素朴にTime Machineから復元しない理由
まとまったファイル群が必要な場合、Time Machineから移行アシスタントを使えば普通に復元できます。が、今回は限られたファイル数件のみ復元させたいので、もっと手軽な方法を探していたのでした。
Sparse bundleとhdiutil
Time MachineはSparse bundleという形式で保存されています。このイメージ形式を扱うには hdiutil
コマンドを使います。
Sparse bundleのイメージは /Volumes/foo/bar/backupimage.sparsebundle
という名前でマウントされていることにします。
ファイルシステムの情報を表示する
どちらかというとまずは情報が読めるかどうかを確認するためにfsidを見てみます。
hdiutil fsid /Volumes/foo/bar/backupimagename.sparsebundle
イメージの情報を表示する
細かいイメージの情報を得るにはimageinfoを使います。
hdiutil imageinfo /Volumes/foo/bar/backupimagename.sparsebundle
readonlyでマウント(attach)する
(そのままマウントしようとしたらうまくいかなかったのと、うっかり破壊すると取り返しがつかないため)readonlyでマウントしてみます。
hdiutil attach -readonly /Volumes/foo/bar/backupimagename.sparsebundle
こうすると/Volumnes/backupimagename
みたいな名前のフォルダができます。その中にバックアップしたファイルが入っているはずです。
アンマウント(detach)する
アンマウントはマウントしたフォルダ名でいけます。
hdiutil detach /Volumes/backupimagename
サルベージするだけならこのくらいだけでも使えれば何とかなると思います。
が、使わないで済むに越したことはないですね…。
追記: ACLについて
Macでreadonlyなファイルシステムからファイルをコピーした場合、コピー後のファイルが変更・削除できなくなっており、chmod 664
等を適用しても上書きできない場合があります。これは、Unixで一般的なパーミッションに加えて、ACLの設定が加わることがあるためです。
ACLは以下のようにchmod -a
を使って削除することができます。ご注意ください。
chmod -a 'group:everyone deny write,delete,append,writeattr,writeextattr,chown' *.txt
確認には ls -le
や ls -led
などを使います。
なお、「きみが壊れた」は谷山浩子『しまうま』所収の名曲です。
Discussion