Time Machine ボリュームを直接操作する(1)

### 背景
2年ぐらい Time Machine のバックアップを取り続けてきているのですが、
どうやらバックアップの格納方法に以下の2種類があるらしく、
Mac OS X のどこかのバージョンで切り替わったようです。

1. バックアップディスクの root directory に Backups.backupdb というディレクトリがあり、その下に各マシンのバックアップが保存される。
2. バックアップディスクの root directory に <ホスト名>.sparsebundle という disk image があり、その image を mount すると Backups.backupdb というディレクトリがあり、その下は 1. と同じ構造

最近 MacBook を新調してデータ移行したのですが、
移行時の何かの間違いにより、新しい MacBook のバックアップ先が 2. と 1. の両方出来てしまいました。
当然いろいろ問題が生じているので、2. の方をバックアップ先として認識しないようにして、1. にすべて保存されるようにする、というのが今回の目的です(両方あると 2. が優先される)。

OSは Mac OS X 10.6.4 (Snow Leopard) なんですが、
どうやら Time Machine のボリュームは OSレベルでいろいろ保護されているらしく、
コマンドラインで操作しようとするとことごとく「Operation not permitted」で弾かれました。
それを一つ一つ外していく、というのが今日の記事の内容になります。
Time Machine のボリュームを直接操作しなければいけなくなった時に役に立つでしょう。

以下、バックアップ先ディスクのボリュームラベルは「TimeMachine」、
バックアップ元のコンピュータ名は「komacbook」とします。

### Backups.backupdb 以下の extended attribute を消す
例えば
[『Laopard標準バックアップツール「Time Machine」を使いこなす』](http://journal.mycom.co.jp/articles/2009/01/29/timemachine/001.html)
などにあるように、Backups.backupdb 直下の各ディレクトリの extended attribute に
バックアップ元のハードウェア情報が記録されており、
TimeMachine はここを見てバックアップ先を決めているようです。
ということで、まずは disk image の中の Backups.backupdb 直下のディレクトリの
extended attribute を消してみることにします。

まず、/Volumes/TimeMachine 以下に komacbook.sparsebundle という disk image があるので、
これを mount します。

$ sudo hdiutil attach /Volumes/TimeMachine/komacbook.sparsebundle
/dev/disk3 Apple_partition_scheme
/dev/disk3s1 Apple_partition_map
/dev/disk3s2 Apple_HFSX /Volumes/Backup of komacbook
(Finder でダブルクリックでも良い)

disk image が “/Volumes/Backup of komacbook” に mount され、
その中に Backups.backupdb があるので、その下にあるディレクトリの
extended attributeを消してみます。

$ cd “/Volumes/Backups of komacbook/Backups.backupdb”
$ ls -lOe@
total 0
drwxr-xr-x@ 84 root staff – 2890 Nov 8 00:51 komacbook
com.apple.backupd.BackupMachineAddress 18
com.apple.backupd.HostUUID 37
com.apple.backupd.ModelID 13
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
$ sudo xattr -d com.apple.backupd.BackupMachineAddress komacbook
xattr: [Errno 1] Operation not permitted: ‘komacbook’

多分 ACL が悪さしてる気がしたので、ACLを外してみます。

$ sudo chmod -N komacbook
chmod: Failed to clear ACL on file komacbook: Operation not permitted

あれれ。。。上位のディレクトリ(Backups.backupdb)の ACL が悪さしてるかもしれないので、
まずはそっちを外してみますか。

$ cd “/Volumes/Backups of komacbook”
$ sudo chmod -N Backups.backupdb
$ ls -dlO Backups.backupdb
drwxr-xr-x 3 root staff – 102 Nov 8 00:51 Backups.backupdb
(Backups.backupdb 自体の ACL は消せる)

しかし、その下のディレクトリのACLが消せない
$ cd Backups.backupdb
$ ls -lO
total 0
drwxr-xr-x@ 84 root staff – 2890 Nov 8 00:51 komacbook
$ sudo chmod -N komacbook
chmod: Failed to clear ACL on file komacbook: Operation not permitted

[Mac OS X ファイルシステムのセキュリティ](http://developer.apple.com/library/mac/documentation/Security/Conceptual/Security_Overview/Concepts/Concepts.html#//apple_ref/doc/uid/TP30000976-CH203-CHDJJGBF)といえば、UNIX Permission、BSD File Flags、POSIX ACLの3種類のはず。
で、コマンドの実行結果を見ればわかる通り、permission は問題ないし、
BSD File Flags はついてないし、POSIX ACL も外してある。
これで ACL が消せないのは謎だなぁ…

### ACL を無効にしてみる
同様の問題でハマってる人は世の中にそれなりにいるようで、検索すると
「fsaclctlでACLオフにしろ」というページがいくつか見付かります。
が、Snow Leopardには fsaclctl がないのです!
調べてみると、Leopard の fsaclctl を持って来れば使えるということだったので、
古いマシンのディスクからコピーして使ってみました。

$ fsaclctl -p “/Volumes/Backup of komacbook”
Access control lists are supported on /Volumes/Backup of komacbook.
$ sudo fsaclctl -p “/Volumes/Backup of komacbook” -d
$ fsaclctl -p “/Volumes/Backup of komacbook”
Access control lists are not supported or currently disabled on /Volumes/Backup of komacbook.

ホントにちゃんと使えて、無事に ACL が無効になりました。

ということで、再度 extended attribute 消去に挑戦です。

$ cd “/Volumes/Backup of komacbook/Backup.backupdb”
$ ls -le
total 0
drwxr-xr-x@ 84 root staff 2890 Nov 8 00:51 komacbook
(ACLは表示されない)
$ ls -l@
total 0
drwxr-xr-x@ 84 root staff 2890 Nov 8 00:51 komacbook
com.apple.backupd.BackupMachineAddress 18
com.apple.backupd.HostUUID 36
com.apple.backupd.ModelID 13
$ sudo xattr -d com.apple.backupd.BackupMachineAddress komacbook
$ sudo xattr -d com.apple.backupd.HostUUID komacbook
$ sudo xattr -d com.apple.backupd.ModelID komacbook
$ ls -l
total 0
drwxr-xr-x 84 root staff 2890 Nov 8 00:51 komacbook

今度は問題なく消えました。

### 続きは…
– [Time Machine ボリュームを直接操作する(2)](http://lovepeers.org/2010/11/11/timemachine2/)
– [Time Machine ボリュームを直接操作する(3)](http://lovepeers.org/2010/11/12/timemachine3/)

スポンサーリンク
スポンサーリンク:

フォローする