Mac OS X 資料一覧

HFS Plus:リソースフォーク管理

2008/2/7更新

対応バージョン: 10.5(Leopard)

リソースフォーク格納場所

リソースフォークはFinderからは見えないようになっているが、com.apple.ResourceForkというEA(Extended Attribute)として存在する。

例えばWebサイトのURLを表すwebloc(Webインターネットロケーション)ファイルの場合、以下のように2つのEAが内包されている。

% ls -l@ Apple.webloc 
-rw-r--r--@ 1 foo  staff  0  2  5 16:11 Apple.webloc
        com.apple.ResourceFork  545 
        com.apple.quarantine    42 

リソースフォークは実際にファイルとしてアクセスすることもできる。

<ファイル>/rsrc
あるいは
<ファイル>/..namedfork/rsrc

リソースフォーク内容参照

リソースフォークファイルはプレーンテキストではないので内容を参照するにはDeRezコマンドを使用する。

ファイルの種類によって様々なデータが格納されるが、前述のweblocファイルの場合リソースフォーク内にURLが格納されている。

% DeRez Apple.webloc 
data 'drag' (128, "Apple.webloc") {
    $"0000 0001 0000 0000 0000 0000 0000 0003"  /* ................ */
    $"5445 5854 0000 0100 0000 0000 0000 0000"  /* TEXT............ */
    $"7572 6C20 0000 0100 0000 0000 0000 0000"  /* url ............ */
    $"7572 6C6E 0000 0100 0000 0000 0000 0000"  /* urln............ */
};

data 'url ' (256, "Apple.webloc") {
    $"6874 7470 3A2F 2F77 7777 2E61 7070 6C65"  /* http://www.apple */
    $"2E63 6F6D 2F"                             /* .com/ */
};

data 'TEXT' (256, "Apple.webloc") {
    $"6874 7470 3A2F 2F77 7777 2E61 7070 6C65"  /* http://www.apple */
    $"2E63 6F6D 2F"                             /* .com/ */
};

data 'urln' (256, "Apple.webloc") {
    $"4170 706C 65"                             /* Apple */
};

リソースフォーク削除

リソースフォークを全て削除するにはxattr -dを使用する。

% xattr -d com.apple.ResourceFork <ファイル>

リソースフォークから任意のデータを削除するには以下の手順で行う。

まずDeRezコマンドでリソースフォークから不要なデータを削除したテキストファイルを作成
% DeRez -skip '<キー>' foo > foo.tmp
次にRezコマンドで上記ファイルからリソースフォークを作成
% Rez foo.tmp -o foo.rsrc
作成されたリソースフォークをオリジナルと入れ替える
% cp foo.rsrc/rsrc foo/rsrc