web-dev-qa-db-ja.com

WindowsはLinuxのシンボリックリンクを認識しますか?

Windowsシステムがシンボリックリンクをどのように処理するのかと思っていました。私の推測では、それはそれらを認識しないでしょうが、完全にはわかりません。

また、Macが直面した場合、Macは何をしますか?

15

非ローカルディスクについては、Windowsのバージョンとサーバー側の構成によって異なります。

Windows Vista以降、Windowsにはシンボリックリンクの概念がありますが、セマンティクスは異なります。しかし、ここでより重要な問題は、異なる構文に従うパス名であるべきです。初心者向け:unixoid側の単一ルートディレクトリツリーと、Windows側のルートとしてのいくつかのドライブ文字。

Unixoid側では、シンボリックリンクは特別なフラグを持つテキストファイルにすぎません。 Windows側では、基になるメカニズムは再解析ポイントと呼ばれます。これは、オブジェクトマネージャに特定の登録済みフィルタに渡すように指示します(これのメタ日付はin再解析ポイントに格納されます)。 Windows 2000では、ジャンクションポイントと呼ばれる1種類の再解析ポイント(大まかにではありませんが、ディレクトリシンボリックリンク)が既に導入されています。 Vistaでは、リモートドライブ上にもファイルとディレクトリの両方へのシンボリックリンクが導入されました。そして、シンボリックリンクonリモートドライブもある程度サポートされています。

重要な点は、ファイルシステムドライバーがローカルで実行されたときに、Windowsが表示するパスに調整を加えるかどうかです。このような場合、特定のローカル/相対シンボリックリンクで機能します。ターゲットとしての絶対パスの場合、意味が推測されにくくなります。リモートシンボリックリンク(「ネットワーク共有」への)についても同様です。

Mac側については私にはわからないので、別の質問としては理にかなっているかもしれません。しかし、サーバー側がこれがシンボリックリンクであるという情報を伝える限り、どちらもSUSセマンティクス(Windowsとは異なります)に従っているため、問題はありません。


Linux側のマウントポイントを検討します。

/dev/sda1 /
/dev/sda2 /home
/dev/sda3 /var

次に、/home/paul/fstabを指すシンボリックリンク/etc/fstabについて考えます。それらは、Windowsが2つの異なるボリューム上にあります-ファイルシステムドライバーを介してそれらを見ることができる場合(機能します!)-/etc/fstabが記述する方法を一緒に属しているとは区別できません。そのため、Windowsが\paul\fstabフォルダーの下に表示するリンクは、たとえ翻訳されていても、\etc\fstabを指しているため、/dev/sda2には存在しません。そして、そのシンボリックリンクが相対パス../../etc/fstabを指す場合は、まったく変化しません。


The Gist:したがって、これをいくつかのコーナーケースで機能させることができると考えられますが、セマンティクスと構文がフェンスの両側で異なるという事実により、実用的であり、機能するジェネリックメソッド。

11
0xC0000022L

0xC0000022Lの答えは、Windows側では完全です。 MacはLinuxのシンボリックリンクを認識できます。ただし、LinuxはMacのFinderで作成されたaliasesを認識できません(ln -sを使用して作成されたシンボリックリンクは正常に機能します)。

2
whoKnows