NTFSジャンクションポイントとシンボリックリンクの違いは何ですか?


138

高レベルでは、NTFSジャンクションポイントシンボリックリンクの唯一の明らかな違いは、ジャンクションはディレクトリにしかできず、SymLinksはファイルもターゲットにできることです。

2つの間に他にどのような違いがありますか?

(私はすでにこの質問を見てきましたが、私が探しているものは少し異なります-その質問は賛成と反対のリストを探しています、私は一連の技術的な違いを探しています)

回答:


86

シンボリックリンクにはより多くの機能がありますが、ジャンクションは制限があるためほとんどレガシー機能のように見えますが、これらの制限のセキュリティ上の影響は、ジャンクションがシンボリックリンクよりも優先される理由です。リモートターゲティングにより、シンボリックリンクはより機能的になりますが、セキュリティプロファイルも向上しますが、ジャンクションはローカルパスに制限されるため、安全です。したがって、ローカルリンクが必要で、絶対パスを使用できる場合は、ジャンクションを使用するほうがよいでしょう。それ以外の場合は、追加された機能についてシンボリックリンクを検討してください。

ここに画像の説明を入力してください

**速度/複雑さの違いに関する声明は、NTFS再解析ポイントに関するWikipediaエントリの未検証の声明に基づいています(良い読み物です)。*


その他のNTFSリンクの比較

トピックに関する他の比較を以下に示しますが、ジャンクションを検討する場合、上記の利点がリストされていないため、これらは誤解を招く可能性があります。

ここから撮影(入門用の優れた資料)

ここに画像の説明を入力してください

MKLinkのSS64ページから

ここに画像の説明を入力してください


用語についてのコメント

ジャンクションは再解析ポイントです(シンボリックリンクとして説明される場合があります)

NTFSジャンクションとNTFSシンボリックリンクは、前述の処理方法の違いは別として、実際には同じ方法(再解析ポイント)で同じことを行っています。実際、技術的には、Junctionはより一般的な意味での「シンボリックリンク」であり、ドキュメントの場合、この場合のようにJunctionをシンボリックリンクと呼ぶ場合があります。このような場合、「シンボリックリンク」は、ジャンクションとは異なるNTFSシンボリックリンクを意味しません(以下を参照)。

NTFS

OPはこれを指定していますが、「シンボリックリンク」はNTFSに固有ではない非常に一般的な用語であることを指摘する価値があります。具体的には、この比較はNTFSジャンクションとNTFSシンボリックリンクの比較です。


ジャンクションポイントとシンボリックリンクはどちらも再解析ポイントですが、ジャンクションポイントはほとんどの場合シンボリックリンクではありません。ああ、テーブルも1つの点で間違っています。ジャンクションポイントのターゲットは作成時に存在する必要がありますが、実際に後で削除することもできます。
0xC0000022L 2018年

3
@ 0xC0000022Lはい、NTFSジャンクションがNTFSシンボリックリンクではないというのであれば、その通りです。私の言い回しがこれを言うと誤解されているかもしれません。明確にするために編集しますが、要点は、このコンテキストでは、「シンボリックリンク」は、ジャンクションも属するより一般的な「シンボリックリンク」のアイデアの特定の実装であるNTFSシンボリックリンクを指すということです。私が投稿したリンクをたどりましたか?NTFSジャンクションがNTFSシンボリックリンクであると言っているわけではありませんが、「シンボリックリンク」という用語はジャンクションを説明するために使用できます。
u8it 2018年

十分に公正ですが、コンセプトについて言及するときは、それについて考える1つの方法かもしれません。しかし、再解析ポイントという用語は概念を理解する上で非常に役立ちます。NTオブジェクトマネージャーで何が起こっているかを説明し、この概念は、たとえばUnixで使用されていたシンボリックリンク(通常のファイルの場合)をはるかに超えているためです。特別なフラグ付き)。そして、はい、接合点が「ディレクトリのシンボリックリンク」として説明されるのを聞いたことがあります。
0xC0000022L

@ 0xC0000022Lまた、テーブルについて間違っているというあなたが言及した問題はわかりません。「存在しないターゲットを指すことができる」という特性を参照していますか?そして、あなたは少なくとも最初にジャンクションを作成するときにこれが間違っていると言っていますか?特定の環境(Windows XPの場合やセキュリティ設定が原因の場合もある)に当てはまると確信している場合は、それを書き留めておきますが、私の経験とドキュメント(およびWindows 10で確認したところ)から、ジャンクションで作成時でも、存在しないパスを常にターゲットにします...これを制限するセキュリティ設定がある可能性があります。
u8it 2018年

ジャンクションはレガシーではありません。それらはシンボリックリンクではなくマウントポイント(バインド/ボリューム)を実装します。パスがオープンで解析されると、システムはマウントポイントを通過する相対シンボリックリンクを評価するために通過したジャンクションを記憶します。これらのトラバーサルでは、ジャンクションを通常のディレクトリのように処理する必要がありますが、シンボリックリンクはそのターゲットパスとして解析されます。たとえば、「C:\ junction」と「C:\ symlink」はどちらも「E:\ spam」をターゲットとし、相対シンボリックリンク「E:\ spam \ eggs.txt」は「.. \ eggs.txt」をターゲットとします。次に、「C:\ junction \ eggs.txt」は「C:\ eggs.txt」に解決され、「C:\ symlink \ eggs.txt」は「E:\ eggs.txt」に解決されます。
Eryk Sun

35

違いに最も役立つ場所:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

仮定:SymlinkはUnixのハードリンクに対するものであるのに対し、SymlinkはWindowsのジャンクションに対するものです。

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

Windows 7およびWindows Vistaでは、コマンドラインユーティリティmklinkを使用して、ファイルとディレクトリの両方のシンボリックリンクをサポートしています。ジャンクションポイントとは異なり、シンボリックリンクはファイルまたはリモートサーバーメッセージブロック(SMB)ネットワークパスを指すこともできます。さらに、NTFSシンボリックリンクの実装により、ファイルシステム間リンクが完全にサポートされます。ただし、クロスホストシンボリックリンクを有効にする機能では、リモートシステムもそれらをサポートする必要があります。これにより、サポートがWindows Vista以降のWindowsオペレーティングシステムに限定されます。

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Windowsで作成されるシンボリックリンクは、ディレクトリジャンクションとよく似ていますが、ディレクトリジャンクションとは異なり、ファイルまたはリモートネットワークファイルまたはディレクトリを指すことができます。ターゲットは、シンボリックリンクの位置を基準としたパス、または現在のボリュームまたは別のボリュームの絶対パスとして定義できます。また、ファイルへのシンボリックリンクはディレクトリへのシンボリックリンクとは異なり、ターゲットは定義と一致する必要があることに注意してください。


1
:Windows 7の具体的な情報についてはmsdn.microsoft.com/en-us/library/windows/desktop/...
ジョシュアドレイク

14
受け入れられた回答はすでに3年前のものですが、引用された仮説で示唆されているように、NFTSジャンクションポイントはUnixのハードリンクと比較されないことを指摘したいと思います。ジャンクションポイントはファイルを参照できませんが、ハードリンクは参照できるため、これは明らかです。NTFSは、ハードリンク(junctionとは異なります)もサポートします。これらは、多かれ少なかれUnixハードリンクに匹敵します。

@elgonzo完全に同意します。私の知る限り、Unixハードリンクはファイルを参照することしかできないため、NTFSディレクトリジャンクションのようには見えません。
フランクリンユー

20

機能的には、一度ウィンドウを作成すると、実際には違いはありません。ただし、できることには大きな違いがあります。ジャンクションは、同じドライブまたは別のドライブ上のフォルダーへのリンクの作成にのみ使用できますが、それらのドライブがローカルシステム上にある場合のみです(ネットワーク経由でフォルダーへのジャンクションリンクを作成することはできません)。ただし、同じ制限はありません。シンボリックリンクを使用して、ファイルまたはフォルダーにリンクできます。これらのファイルまたはフォルダーは、同じシステム(同じドライブまたは異なるドライブ)またはネットワーク共有に配置でき、相対ロケーションシンボリック( "\\ system2 \ foldera \ file.txt "、" d:\ foldera \ file.txt "、" \\ system2 \ foldera "、" d:\ foldera "または" d:\ foldera \ folderb .. "

要約すると、ジャンクションポイントはローカルシステム上のフォルダーにのみ制限されますが、シンボリックリンクは、UNCパスを介して、またはローカルシステム上でアクセス可能なフォルダーまたはファイルへのリンクを作成でき、それらの場所の指定方法に多様性があります。シンボリックリンクは基本的に、ジャンクションポイントとハードリンクの両方に代わる、より用途の広いものです。さらに、クロスプラットフォームのUNCパスリンクを作成する場合、シンボリックリンクはUnixおよびLinuxと互換性があります。

うまくいけば、これは満足のいく方法であなたの質問に答えます。誤植を訂正するために編集されました。


10

リンクシェル拡張(http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html)は、さまざまな種類のリンクを作成および表示するための優れたツールです。また、優れたドキュメントもあります。

[フルインストールでは、詳細リンクを表示している場合、新しいプロパティタブが追加されます。には、さまざまなリンクタイプのアイコンオーバーレイの矢印も追加されます。これらが表示されない場合は、FAQセクションまでスクロールしてください。Windowsは13のオーバーレイのみをサポートしています。彼はレジストリの回避策を示しています。情報の有用性の例:フォルダーと考えていたものに対する特権を取得しようとして失敗しましたが、実際には、システム提供のJunction Linkであり、Windowsの古いエディションとの互換性の目的でよく使用されていました。]

ジャンクションとシンボリックリンクは、ローカルシステム上のディレクトリに対して作成された場合、基本的に同じように動作します。

しかしながら:

それらはネットワーク上で異なる動作をします。このリンクはこの動作を説明しています:https : //superuser.com/questions/343074/directory-junction-vs-directory-symbolic-link

ジャンクションリンクを「場所に関してOSをだますショートカット」と考える場合、それらの使用とそれらを壊すものの実用的な類似点がよくわかります。主な違いは、シンボリックリンクまたはジャンクションをコピーすると、ポインターを含むファイルではなく(ショートカットのように)ターゲットをコピーすることです。ショートカットと同様に、ターゲットファイル/フォルダーを削除せずにシンボリックリンクまたはジャンクションリンクを削除できます。[ハードリンク、ごみ箱からも含めて、最後のリンクが削除された場合にのみファイルが削除されます。LSEでこれらのリンクのプロパティタグを調べて、ハードリンクのターゲットまたは参照カウントを確認します。]

ハードリンクまたはショートカットは、ターゲット全体の破壊やコピーなどの副作用なしに移動できる唯一のリンクタイプです。ターゲットを移動すると常にリンクが解除されますが、リンクは[プロパティ]タブ(LSEで表示)で簡単に更新したり、複雑な場合はLSEで再作成したりできます。

シンボリックリンクの作成には管理者権限が必要ですが、ジャンクションには必要ありません。これに加えて、ジャンクションの広範な内部OSの使用は、Windowsが直感的で期待される方法でそれらを処理することを示唆しています。[システムフォルダーからの予期しない副作用(Win 10の使用経験から)に注意してください。]

[Link Shell Extensionのバックアップ固有の機能のいくつかは非常に便利です。つまり、保留中のバックアップの目的で、標準フォルダにいくつかのタイプの更新可能なシンボリックリンク構造を作成できます。]


そして、Link Shell Extensionは素晴らしいツールのように見えます。ln.exeと呼ばれる関連する軽量ユーティリティもあります。どちらも使用しなくても、Webサイトのわかりやすいユーザーガイドを読むだけで多くのことを学ぶことができます。
u8it 2016年

クレイさん、2016年4月2日の編集により、状況がわかりにくくなったと思います。「これらのファイルと「ショートカット」ファイルの主な違いは、ポインタを含むファイルだけではなく、ターゲットをコピーすることです(ショートカットをコピーするとどうなるかということです)。ファイル)」
Jon Coombs 2017年

4

シンボリックリンクがWindowsにごく最近導入されました。

シンボリックリンクは、既存のNTFS "再解析ポイント"テクノロジの代替と見なすべきではありません。

Microsoftは、シンボリックリンクの唯一の目的はUnixとの互換性を高めることであると説明しています。

MSDN: " シンボリックリンクは、UNIXとの移行およびアプリケーションの互換性を支援するように設計されています。Microsoftは、シンボリックリンクを実装して、UNIXリンクと同じように機能します。 "

Vistaは、独自の機能のためにリンクを使用する最初のOSでもあります。従来のフォルダ名と互換性を持たせるために、C:\Documents and SettingsがへのリンクになりましたC:\Users

興味深いことに、Vistaではシンボリックリンクが導入されていますが、この " Documents and Settings"のトリックは、実際には単純な古い接合です。


2
この回答は、シンボリックリンクとジャンクションの違いについては何も述べていません。(そのため、この質問にはまったく当てはまらないと思います)
Billy ONeal

Windows Vista以降では、シンボリックリンクがジャンクションを置き換えます(また、ご存知のように、両方とも再解析ポイントです)
Aravind

2

u8itからの素晴らしい答えに加えて:

Windows 10のWindowsファイルエクスプローラーの動作の違いに興味がある場合:

ターゲットディレクトリにドラッグアンドドロップ:

  • symbolic link:をsymbolic linkターゲットディレクトリに移動します
  • junction:をoriginal directoryターゲットディレクトリに移動します

右クリック+プロパティ:

  • symbolic link:ショートカットのプロパティを表示します
  • junctionoriginal directoryフォルダーのプロパティを表示します

ペイン(ディレクトリツリー)でクリックます。

  • symbolic link:を選択します original directory
  • junction:を選択します junction

シンボリックリンクの作成には管理者権限が必要ですが、ジャンクションには必要ありません。
ジンジノフ

Windows 10バージョン10.0.17134.1130:エクスプローラーでジャンクションを移動すると、元のディレクトリのコンテンツのみが移動します。ツリーのシンボリックリンクを左クリックしても、元のディレクトリは選択されません。
SalgoMato
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.