故障したMacハードドライブからHFS +ファイルシステムイメージを回復し、Linuxマシンにループバックマウントできます。 Linuxマシンからこのファイルシステム内のファイルのリソースフォークにアクセスするにはどうすればよいですか?
(私はこれほど大きな画像を保存できるMacを持っていません。)
追加 /rsrc
ファイル名の末尾に移動してリソースフォークにアクセスします。どこにあるのか、どこに文書化されているのかわかりません。
編集:明確にするために、私はコマンドラインの使用法について言及していました。例えば cp somefile/rsrc destfile
は、somefileのリソースフォークをdestfileというファイルにコピーします。すべてのコマンドライン関数はこのように機能します。グラフィカルなものでテストしたことはありません。
このメカニズムは2.xxカーネルに存在していましたが、後の時点で削除されました。 seec https://evilpiepirate.org/git/linux-bcache.git/plain/fs/hfsplus/inode.c
* hfsplus_file_lookupには休閑が含まれていました:
if (HFSPLUS_IS_RSRC(dir) || strcmp(dentry->d_name.name, "rsrc"))
goto out;
これは後で削除されました。文書化されたことはなく、すべてのシステムで機能したとは限りません。いずれにせよ、「Neil Mayhew」が指摘しているように、現在のカーネルメインラインソースはこれを行いません。さらに、OS X Appleは新しいリソースフォークの作成を停止したため、レガシーファイルのみがそれらを持ちます。
デフォルトのカーネルドライバではこれが不可能だと思います(fs/hfsplus
カーネルソース内)。
LinuxにマウントされたHFS +ボリュームと、リソースフォークのあるファイルがあります。一般的に使用される特別なファイル名構文の両方を試しましたFILENAME/rsrc
およびFILENAME/..namedfork/rsrc
。前者は以前はMacOSで動作し、後者は現在Mac OSで動作しますが、どちらもLinuxでは動作しません。エラーENOTDIR
、 "ディレクトリではありません"を返します。リソースフォークがあるファイルとデータフォークがないファイル、および両方があるファイルでこれを試しました。
ドライバソースを調べたところ、特別なファイル名構文またはioctl
呼び出しを使用して、リソースフォークに明示的にアクセスできる兆候は見られませんでした。ドライバーはリソースフォークに関係しますが、ファイルが移動されたときにファイルの残りの部分と一緒に保持し、ファイルが削除されたときにそれらを削除することのみを目的としています。
私はこれについて間違っていると証明されたいのですが、それとは反対の情報を見つけることができませんでした。
これは今は役に立ちませんが、将来の参考のために、リソースフォークを持つ単一のファイルを2つのファイルに変換するユーティリティがApple開発者ツールSplitForks
と呼ばれます。 2番目の非表示のファイルには、元のファイル名の前に._
が付いています。これはAppleDouble形式であり、ファイルのタイプや作成者コードなどのFinderメタデータも含まれています。これはMac固有のデータを保存するために使用される形式と同じです。 Zip
やtar
などのアーカイブ形式、およびrsync
を使用した転送用。
SplitForks
は、ディレクトリツリー全体で階層的に機能し、データを失うことなくMac以外のファイルシステムに転送できます。ディレクトリツリーが後で別のMacに移動された場合に、分割されたファイルを元に戻すFixupResourceForks
と呼ばれるコンパニオンユーティリティもあります。