SysInternalsには、Windowsでジャンクション(別名:再解析ポイント、別名:シンボリックリンク)を作成するjunction.exeプログラムがあります。
ただし、Windows には、同じことを行うように見えるmklinkも付属しています。
大きな違いはありますか?
SysInternalsが独自のプログラムを持っている場合、標準のMKLinkプログラムに欠陥があると私は信じがちです。
SysInternalsには、Windowsでジャンクション(別名:再解析ポイント、別名:シンボリックリンク)を作成するjunction.exeプログラムがあります。
ただし、Windows には、同じことを行うように見えるmklinkも付属しています。
大きな違いはありますか?
SysInternalsが独自のプログラムを持っている場合、標準のMKLinkプログラムに欠陥があると私は信じがちです。
回答:
Mark Russinovichのjunction
プログラムは、接合点の作成(および削除)という特定の目標を念頭に置いて設計されました。それは何年も維持されていましたが、新しい機能はこれまで追加されていません。最新バージョンは2016年7月4日にリリースされました。
についてはmklink
、Windows Vista以降で使用可能な組み込みコマンドです。ハードリンク、ジャンクションポイント、およびシンボリックリンクを作成できます。特定の削除機能は提供されていません。リンクがファイルを指すかディレクトリを指すかによって、単にdel
or rd
コマンドを使用できます。
Vistaより前のWindowsオペレーティングシステムには、すぐにジャンクションポイントを作成する方法がありませんでした。公式のリソースキットのコピーを入手するか、サードパーティのプログラムを使用するか、自分で作成する必要がありました。
junction
ツールの最初のバージョンがリリースされました。公式ウェブサイトを引用:
Windows 2000以降は、ディレクトリシンボリックリンクをサポートします。このディレクトリでは、コンピューター上の別のディレクトリへのシンボリックリンクとして機能します。[...]
残念ながら、Windowsにはジャンクションを作成するためのツールが付属していません
linkd
。ジャンクションを作成するためのプログラムに付属しているWin2Kリソースキットを購入する必要があります。そこで、独自のジャンクション作成ツールであるJunctionを作成することにしました。出典:ジャンクション
このmklink
コマンドは、初期ベータ段階でWindows Vistaで導入されました。
2005年7月27日に出荷された公式のBeta 1から利用できました。当初は、シンボリックリンクとハードリンクしか作成できませんでした。ジャンクションポイントを作成する機能は、2005年12月19日にリリースされたコミュニティテクノロジープレビュー(CTP)によって後から登場しました。
どうやらコマンドは、2006年の後半に初めて公開されるまで、まったく気付かれなかったようです。ここに私が見つけることができた最も早い参照があります:
これで、Windows Vistaでシンボリックリンクを作成できます。
C:\test>ver Microsoft Windows [Version 6.0.5365] C:\test>mklink Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target [...]
また:
Malcolm [MSFT](エキスパート):
Q:シンボリックリンクを作成する簡単な方法はありますか?
A: CMDを開き、「mklink」と入力します。このツールを使用すると、ジャンクション、ハードリンク、シンボリックリンクを作成できます。
ファイルまたはディレクトリには、ユーザー定義データのコレクションである再解析ポイントを含めることができます。このデータの形式は、データを保存するアプリケーションと、データを解釈してファイルを処理するためにインストールするファイルシステムフィルターによって認識されます。
たとえば、再解析ポイントは、NTFSファイルシステムリンクとMicrosoft Remote Storage Server(RSS)を実装するために使用されます。
ソース:再解析ポイント
NTFSファイルシステムでサポートされているファイルリンクには、ハードリンク、ジャンクション、シンボリックリンクの3種類があります。
ハードリンクは、複数のパスが同じボリューム内の1つのファイルを参照するファイルのファイルシステム表現です。[...]そのファイルへの変更は、それを参照するハードリンクを介してアクセスするアプリケーションに即座に表示されます。ただし、ディレクトリエントリのサイズと属性情報は、変更が行われたリンクについてのみ更新されます。
ジャンクション(ソフトリンクとも呼ばれます)は、参照するストレージオブジェクトが個別のディレクトリであるという点でハードリンクと異なり、ジャンクションは同じコンピューター上の異なるローカルボリュームにあるディレクトリをリンクできます。
ジャンクションポイントは、ローカルボリューム上のディレクトリにのみリンクできます。リモート共有へのジャンクションポイントはサポートされていません。
ソース:NTFSジャンクションポイント
シンボリックリンクは、別のファイルシステムオブジェクトを指すファイルシステムオブジェクトです。指し示されているオブジェクトは、ターゲットと呼ばれます。
シンボリックリンクはユーザーに対して透過的です。リンクは通常のファイルまたはディレクトリとして表示され、ユーザーまたはアプリケーションはまったく同じ方法で操作できます。
出典:シンボリックリンク
[シンボリックリンク]は、Windows VistaでNTFSファイルシステムに加えられた変更で導入されましたが、Windows XPのフィルタードライバーを介して利用できます。
NTFSジャンクションポイント(Windows 2000以降で使用可能)とは異なり、シンボリックリンクはファイルまたはリモートSMBネットワークパスを指すこともできます。NTFSジャンクションポイントはローカルドライブ上の絶対パスのみをサポートしますが、NTFSシンボリックリンクは相対パスを使用したリンクを許可します。
Windows Vista / Windows 7のデフォルトのセキュリティ設定では、昇格していない管理者とすべての非管理者がシンボリックリンクを作成することは許可されていません。
ソース:NTFSシンボリックリンク
mklink
ターゲットタイプに関係なくプレーンで作成)と「ディレクトリ」シンボリックリンク(作成mklink /d
)があります。ターゲットに対して適切なタイプのリンクを作成することが最善です。
コメントですでに述べたように、junction.exe
Vista / Winserver 2008の前に出てきましたmklink
。これにはコマンドが付属していました。
したがって、Vista以降で使用する意味はありません。とにかく、Vistaよりも古いバージョンのWindowsはサポートされなくなりました。
また、Vista / WinServer 2008およびコマンドで導入されたNTFSシンボリックリンク(NTFSジャンクションのみ)junction.exe
はサポートしていません。mlink
Junction
リンクされたページによると、2010年9月に公開されました。同様に、リンク先のページMKLINK
の公開日は2012年4月です。これはJunction
、mklink
実行可能ファイルがWindowsに追加される前に作成されたことを強く示しているようです。(私は完全な答えではなく、それぞれが最初に登場したときに、さらに、したがってコメントを掘っていない誰かが私のゲストをこれに拡張し、適切な答えを作成し、になりたい場合。。)