OSX backup final

ずっと続いてきた、 TImeMachine のディスクイメージを別の新しいファイルシステムに書き戻す問題。rsyncで書き戻したものは正しいのか否か。

前述したように、コピー先をちょっと捻っておくとエラーを出さずに順調に書き戻している。しかし、コピー元、コピー先で以下のように inode 番号を確認してみると…。

yagimac{yagi(s005)}21844: ls -dli */Macintosh\ HD/Applications/Address\ Book.app
    154 drwxrwxr-x@ 3 root  admin  102 Feb 22  2008 2008-03-09-004903/Macintosh HD/Applications/Address Book.app/
    154 drwxrwxr-x@ 3 root  admin  102 Feb 22  2008 2008-04-05-224200/Macintosh HD/Applications/Address Book.app/
    154 drwxrwxr-x@ 3 root  admin  102 Feb 22  2008 2008-05-18-102404/Macintosh HD/Applications/Address Book.app/
1439337 drwxrwxr-x@ 3 root  admin  102 May 29  2008 2008-06-15-135929/Macintosh HD/Applications/Address Book.app/
1769122 drwxrwxr-x@ 3 root  admin  102 Jul  1  2008 2008-07-05-194842/Macintosh HD/Applications/Address Book.app/
1769122 drwxrwxr-x@ 3 root  admin  102 Jul  1  2008 2008-08-02-133527/Macintosh HD/Applications/Address Book.app/
1769122 drwxrwxr-x@ 3 root  admin  102 Jul  1  2008 2008-09-06-171007/Macintosh HD/Applications/Address Book.app/
2374743 drwxrwxr-x@ 3 root  admin  102 Sep 18  2008 2008-10-05-170929/Macintosh HD/Applications/Address Book.app/
2374743 drwxrwxr-x@ 3 root  admin  102 Sep 18  2008 2008-11-14-224936/Macintosh HD/Applications/Address Book.app/
2374743 drwxrwxr-x@ 3 root  admin  102 Sep 18  2008 2008-11-28-223957/Macintosh HD/Applications/Address Book.app/
2374743 drwxrwxr-x@ 3 root  admin  102 Sep 18  2008 2008-12-13-121005/Macintosh HD/Applications/Address Book.app/
3033558 drwxrwxr-x@ 3 root  admin  102 Dec 16  2008 2008-12-20-162535/Macintosh HD/Applications/Address Book.app/
3033558 drwxrwxr-x@ 3 root  admin  102 Dec 16  2008 2009-01-11-181135/Macintosh HD/Applications/Address Book.app/
3033558 drwxrwxr-x@ 3 root  admin  102 Dec 16  2008 2009-01-19-224322/Macintosh HD/Applications/Address Book.app/
(後略)
yagimac{yagi(s005)}21845: cd /Volumes/Time\ Machine\ ハ?ックアッフ?/TMPX/Backups.backupdb/黒山羊\ の\ MacBook\ Pro/              zsh
yagimac{yagi(s005)}21846: ls -dli */Macintosh\ HD/Applications/Address\ Book.app                                                     zsh
    142 drwxrwxr-x@ 3 yagi  staff  102 Feb 22  2008 2008-03-09-004903/Macintosh HD/Applications/Address Book.app/
 875781 drwxrwxr-x@ 3 yagi  staff  102 Feb 22  2008 2008-04-05-224200/Macintosh HD/Applications/Address Book.app/
1910368 drwxrwxr-x@ 3 yagi  staff  102 Feb 22  2008 2008-05-18-102404/Macintosh HD/Applications/Address Book.app/
2892158 drwxrwxr-x@ 3 yagi  staff  102 May 29  2008 2008-06-15-135929/Macintosh HD/Applications/Address Book.app/

TimeMachine なので、変化のなかったファイルはハードリンクで済ませている&&アプリケーションって実はフォルダ(ディレクトリ)で実装されている。
ということを組み合わせると、コピー元のように、変化がなかった間は inode 番号が変化していない。それをハードリンクをサポートしている rsync でコピーすると、何故かそれぞれ別のものになっている。
最初の頃、 tar で書き戻したものが速攻で溢れてたのもこの所為だな。

そう!ディレクトリのハードリンクをサポートしているものでないと、正しく書き戻せないのだ。
ディレクトリのハードリンク?!

参考:AppleInsider: Mac OS X Leopard に向かって: Time Machine [Page 3] - silvervine の定点観測所

そう云えばディレクトリのハードリンクなんて聞いたことがなかった。
このディレクトリハードリンクに、 ACL 、拡張属性、リソースフォークとここまで filesystem を使い倒してる Unix OS もないんじゃないか?しかも自社製。 Apple なにげに技術力高い…。

HFS というとどうも昔のイメージで、あの case insensitive な…、とか、あのキモいリソースフォークとやらのついてる…、というダサいファイルシステムが思い出されちゃうんだが、OSX の HFS+ ってずいぶんイケてるものに化けてたんだな。
スノレパでは ZFS もサポートされるはずだが、いったいどうなってしまうのか…。ZFS のストレージプールやら COW やらの上に、この HFS+ が乗ったりするのかな

ちなみに HFS+ の場合、 ls -l の permission 10文字の左に出る @ が拡張属性で + が ACL 。それぞれ -@ と -e で表示させられる。

追記:2009.8.3
UFSのiノード・ハードリンクとHFS+のそれの違いは以下が詳しい
Undocumented Mac OS X:第8回 HFS、HFS Plusの基本的概念【中編】 (3/3) - ITmedia エンタープライズ

オープンソースマガジンって旧UNIX USERか……。


03:20:00 - 25.07.09 - kuroyagi - その他雑記 - 8714x