NTFS接続とUnixハードリンク

NTFS接続とUnixハードリンク

CILコード用のIO抽象化ライブラリを構築していますが、NTFSの2つのフォルダ間の接続とハードリンクの違いを理解するのが困難です。

彼らは平等ですか?どのような違いを知る必要がありますか?

答え1

NTFS結合ポイントは、事実上シンボリックリンクとして機能する再解析ポイントですが、絶対パスを介してローカルディレクトリを見つけることに制限されます。

あなたが持っていると仮定

C:\>mkdir a b
C:\>linkd b\c C:\a

何が起こると、カタログテーブルに名前C:\bのカタログエントリが挿入されます。cそのプロパティには$Reparse、ターゲットへの接続ポイントであることを指定するデータが含まれていますC:\a

Windows 2000(再分析ポイントと結合ポイントが導入された場合)が再分析ポイントを検出すると、適切なハンドラに渡されました。この場合、下のパスにアクセスすると、結合ポイントC:\b\cのハンドラがそのパスを置き換え、C:\b\cそこC:\aから通常のファイルシステム操作が続行されます。

他のタイプの再分析ポイントを傍受して処理するために、追加のファイルシステムフィルタをインストールできます。 Windows Vista、Server 2008以降には、NTFSの「シンボリックリンク」再解析ポイントのハンドラが付属しており、ファイル、ディレクトリ、絶対、または相手を指すことができます。 、ローカルまたはリモート - 他のシステムのシンボリックリンクと非常によく似ています。


また、NTFSはUNIXと同様にハードリンクもサポートしています。複数のディレクトリエントリが実際のファイルデータである同じ「inode」を指すことがあります。これは再分析ポイントとは関係ありません。ほとんどすべてのシステムでは、ファイルのみがハードリンクできます。ハードリンクされたディレクトリには危険があります。 (それに加えて、..ハードリンクされたディレクトリエントリは何を指すべきですか?)

答え2

ディレクトリのNTFS再解析ポイントは、Linux / UNIXのループバックマウントと非常によく似ています。

ファイルへのNTFSハードリンクは、Linux / UNIX上のファイルへのハードリンクと非常によく似ています。

NTFSシンボリックリンクは、Linux / UNIXのシンボリックリンクと非常によく似ています。

Windows用のCygwinの以前のバージョンは、再分析ポイントをハードリンクとして処理し、/usr/bin/findがファイルシステムの周期について不平を言いました。 POSIX 互換プログラムに関しては、Cygwin の将来のバージョンでは、再解析ポイントをシンボリックリンクと同じように扱います。

関連情報