コンピュータのファイル システムでは、フォークはファイル システム オブジェクトに関連付けられたデータのセットです。フォークのないファイル システムではコンテンツとして 1 セットのデータしか許可されませんが、フォークのあるファイル システムでは複数のコンテンツが許可されます。空でないファイルには、多くの場合デフォルト タイプのフォークが少なくとも 1 つ必要です。また、ファイル システムによっては、ファイルに 1 つ以上の他の関連フォークがある場合があり、そのフォークにはファイルに不可欠なプライマリ データ、またはメタデータだけが含まれる場合があります。
拡張属性は、通常固定サイズである同様のファイル システム機能ですが、フォークは可変サイズにすることができ、ファイルのプライマリ データ フォークよりも大きくなる場合もあります。ファイルのサイズは、各フォークのサイズの合計です。
フォークを使用できる一般的なファイル システムには、Apple のHFS+や Microsoft のNTFSなどがあります。
代替案
フォークのないファイル システムでは、代わりに、互いに関連付けられた複数の個別のファイル、特にメタデータ用のサイドカー ファイルを使用できます。ただし、これらのファイル間の接続はファイル システムによって自動的に保持されないため、ファイルを操作する各プログラムによって処理される必要があります。もう 1 つの代替手段は、特定のファイル形式内で追加データを格納するコンテナー ファイル、またはファイル内 (単一のフォーク内) に複数のファイルとメタデータを格納できるアーカイブ ファイルです。この場合、ファイル システムがフォークを処理するのではなく、プログラムがコンテナー ファイルまたはアーカイブ ファイルを処理する必要があります。これらの代替手段では、データを使用するプログラムによる追加の作業が必要になりますが、フォークをサポートしないファイル システムへの移植性という利点があります。
実装
りんご
ファイルシステムフォークは、 Appleの 階層ファイルシステム(HFS)に関連付けられています。[1] HFSとオリジナルのApple MacintoshファイルシステムであるMFSでは、ファイルシステムオブジェクトにデータフォークとリソースフォークの2種類のフォークを許可していました。
リソースフォークは、ローカライズ可能なテキスト文字列、Finder で使用されるファイルのアイコン、アプリケーションに関連付けられたメニューやダイアログボックスなど、システムのグラフィカルユーザーインターフェイス(GUI) で使用される非コンパイルデータを格納するために設計されました。 [2]ただし、この機能は非常に柔軟であったため、ワードプロセッサ文書をコンテンツとプレゼンテーションに分割し、各部分を別々のリソースに格納するなど、追加の用途が見つかりました。コンパイルされたソフトウェアコードもリソースに格納されるため、アプリケーションはリソースフォークのみで構成され、データフォークは含まれないことがよくありました。
HFS+の最も目立たない機能の 1 つは、従来のデータ フォークとリソース フォークに加えて、任意の数のカスタム「名前付きフォーク」をファイルに持つことができることです。この機能は、Apple がMac OS 8.1 - 10.3.9ではサポートしなかったため、ほとんど使用されていませんでした。10.4以降、Apple の拡張インライン属性をサポートするために部分的な実装が行われました。[3]
Mac OS X v10.4までは、tarなどのUnixコマンドラインユーティリティを実行すると、ユーティリティがファイルのリソースフォークを処理できるように更新されていなかったため、データが失われる危険がありました。[4]
ノベル
1985 年以降、Novell NetWare ファイル システム(NWFS) とその後継のNovell Storage Services (NSS) は、ファイルのメタデータを保存するためにさまざまな方法を使用するように根本から設計されました。メタデータの一部はNovell Directory Services (NDS) に存在し、一部はディスク上のディレクトリ構造に保存され、一部は Novell の用語でファイル自体とともに「複数のデータ ストリーム」に保存されます。複数のデータ ストリームにより、Macintosh クライアントはNetWareサーバー に接続して使用することもできます。
マイクロソフト
Windows NT 3.1で導入されたファイルシステムであるNTFS は、代替データストリーム(ADS)と呼ばれるファイルシステムフォークをサポートしています。 [5] Windows Server 2012で導入された新しいファイルシステムであるReFS は、もともと ADS をサポートしていませんでした[6] [7] [8]が、 Windows 8.1 64 ビットおよび Server 2012 R2では、最大 128K の長さの ADS のサポートが ReFS に追加されました。[9]
ADS は元々、フォークをサポートする既存のオペレーティング システムとの互換性を追加することを目的としていました。[要出典]コンピュータ プログラムは、ファイル パスの後にコロン記号 (:) を付けて ADS の名前を指定することにより、ADS を開くように指示される場合があります。 [10]サポートにもかかわらず、Windows エクスプローラーやdirコマンド (Windows Vista 以前) を含むほとんどのプログラムは ADS を無視します。Windows エクスプローラーは ADS をコピーし、対象のファイル システムが ADS をサポートしていない場合は警告しますが、メイン ストリームのサイズを計算するだけで、ファイルまたはフォルダーのストリームを一覧表示しません。Windows Vista以降、このdirコマンドは ADS の表示をサポートしています。[11] Windows PowerShell v3.0 以降では、ADS の操作がサポートされています。[12]
用途
Windows 2000では、 ADS を使用して、画像ファイルにサムネイルを保存し、メイン ストリームを変更せずに任意のファイルに要約情報 (タイトルや作成者など) を保存します。[13] [14] Windows XPで、Microsoft は、ADS を含むファイルが NTFS ボリュームから移動されると ADS が失われやすいことに気付きました。そのため、Windows XP では、ファイル形式がサポートしている場合は常にメイン ストリームに要約情報を保存します。[13] Windows Vista では、要約情報は ADS では処理できないほど機密性が高いと Microsoft が判断したため、要約情報の追加は完全にサポートされなくなりました。[15]しかし、他の目的での ADS の使用は止まりませんでした。Windows XP の Service Pack 2 では、ダウンロードされたファイルの出所に関する詳細をゾーン識別子と呼ばれる ADS に保存する添付ファイル実行サービスが導入されました。これは、リスクをもたらす可能性のあるダウンロード ファイルからユーザーを保護するための取り組みです。[16] Internet Explorerと Windows 8 では、SmartScreenを通じてこの機能が拡張されました。[17] Internet Explorer では、インターネット ショートカットファイルにファビコンを保存するためにも ADS が使用されます。[10]
太陽
Solarisバージョン 9 以降では、ファイルにフォークを持たせることができます。フォークはSolaris では拡張属性と呼ばれますが、通常の「拡張属性」の意味ではありません。Solaris タイプの拡張属性の最大サイズはファイルの最大サイズと同じで、ファイルと同じ方法で読み書きされます。内部的には、通常のファイルと同じように保存およびアクセスされるため、所有権と権限は親ファイルと異なる場合があります。サブディレクトリは管理上[明確化が必要]無効になっているため、名前に「/」文字を含めることはできません。
ネットワーク ファイル システムバージョン 4の拡張属性は、Solaris スタイルの拡張属性に似ています。
セキュリティとデータ損失のリスクの可能性
ファイルシステムが異なるフォークをサポートしている場合、アプリケーションはそれを認識する必要があります。そうしないと、セキュリティ上のリスクが発生する可能性があります。適切なシムを配置せずにレガシーソフトウェアがデータにアクセスできるようにすることが、このような問題の主な原因です。[引用が必要]
さまざまなシステム ユーティリティ (ディスク エクスプローラー、ウイルス対策ソフトウェア、アーカイバなど) がさまざまなフォークを認識しない場合、次の問題が発生する可能性があります。
- ユーザーは、代替フォークの存在やファイルの合計サイズを知ることはなく、メイン データ フォークのみを知ることになります。
- コンピュータ ウイルスはWindows 上の代替フォークに隠れることがあり、ウイルス対策ソフトウェアがフォークを認識しない場合は検出されません。
- 電子メールなどのフォークを認識しないチャネル、フォークをサポートしていないファイル システムを介してファイルを送信した場合、またはコピーを作成したプログラムがフォークをサポートしていない場合、フォークをサポートするファイル システム間でファイルをコピーした場合、またはフォークをサポートしていないソフトウェアでファイルを圧縮した場合にも、データが失われる可能性があります。
参考文献
- ^ Apple (1996-07-02). 「File Forks」. Apple. 2008-07-24 時点のオリジナルよりアーカイブ。2006-11-18閲覧。
- ^ ブルース・ホーン。「グランド・ユニファイド・モデル(1) - リソース」。Folklore.org 。 2017年10月3日閲覧。
- ^ ジョン・シラクーサ (2005 年 4 月 28 日)。 「Mac OS X 10.4 Tiger」。アルステクニカ。
- ^ 「Mac OS X のコマンドライン バックアップ ソリューション」。Apple。2005 年 10 月 29 日。2008 年 2 月 25 日時点のオリジナルよりアーカイブ。2006 年 11 月 18 日に取得。
- ^ 「ファイルとクラスター」。Microsoft。2021 年 1 月 7 日。2023 年 8 月 15 日に閲覧。
- ^ Verma, Surendra (2012 年 1 月 16 日). Sinofsky, Steven (編). 「Windows 向け次世代ファイル システムの構築: ReFS」. Windows 8 の構築. Microsoft. MSDN ブログ. 2013 年 2 月 16 日時点のオリジナルからのアーカイブ。2013年1 月 20 日閲覧。
- ^ Foley, Mary Jo (2012 年 1 月 16 日). 「Microsoft が新しい Windows 8 ファイル システムの計画を公開」. ZDNet . CBS Interactive . 2024 年7 月 31 日閲覧。
- ^ Martin Lucas. 「Windows Server 2012: ReFS は NTFS に代わるものか? いつ使用すべきか?」TechNet。2013 年 1 月 23 日時点のオリジナルよりアーカイブ。
- ^ 「Resilient File System の概要」。Microsoft Docs。Microsoft。2017年 1 月 13 日。2023 年8 月 15 日に閲覧。
- ^ ab Law, Eric (2013 年 9 月 7 日). 「Fun with Favicons」. Microsoft Docs . Microsoft . 2023 年8 月 15 日閲覧。
- ^ Bart De Smet (2006-07-13). 「Vista の DIR コマンドを使用して代替データ ストリームを表示する」B# .NET ブログ。2007-09-27 にオリジナルからアーカイブ。2007-07-07に取得。
- ^ 「FileSystem Provider (Windows PowerShell 3.0)」。TechNet。Microsoft。2012年8 月 9 日。2015 年1月 23 日時点のオリジナルよりアーカイブ。
- ^ ab Chen, Raymond (2011 年 5 月 27 日)。「Windows 2000 で 作成されたカスタム プロパティが、新しいバージョンの Windows からファイルを表示すると失われるのはなぜですか?」。The Old New Thing。Microsoft。2020年6月 10 日閲覧。
- ^ Microsoft (2006-10-27). 「インデックス サービスにより、画像ファイルにデータ ストリームが追加されます」。Microsoft。2006年 11 月 18 日閲覧。
- ^ Chen, Raymond (2012 年 5 月 1 日)。「Windows 2000 および Windows XP で作成された概要情報 はどうなったのか?」The Old New Thing。Microsoft。2020年6月 10 日閲覧。
- ^ Bart De Smet (2005-08-19)。「Windows XP SP2 および Windows Server 2003 SP1 の「添付ファイル実行サービス内部」のデモ」。B# .NET ブログ。2007-02-23 にオリジナルからアーカイブ。2006-11-18に取得。
- ^ Chen, Raymond (2013 年 11 月 4 日)。「ゾーン識別子の操作により 、ファイルのダウンロード元を指定する」。The Old New Thing。Microsoft。
外部リンク
- MSDN ライブラリ: ファイル ストリーム
- 代替データストリーム
- Windows の代替データ ストリーム
- NTFS 代替ストリーム
