MKLINK for WINDOWS:ハードリンク、シンボリックリンク:ファイルシンボリックリンク、ディレクトリシンボリックリンク:ディレクトリ結合...
Mklink Windows Hard Links
は何ですか シンボリックリンクとハードリンクの違い ?シンボリックリンクとの違いを説明する シンボリックリンク また、ハードリンクはLinux / Unix環境がどのように機能するかを知るために簡単で不可欠です。
シンボリックリンクとハードリンクの違いを理解することは、Webサーバーのメンテナンスと最新のWebサイトの動作を理解するためにも重要です。
シンボリックリンクまたはシンボリックリンクとは何ですか?
シンボリックリンク 、よく呼ばれるシンボリックリンクまたはソフトリンクは、Windowsでわかっていることと非常によく似ています。 ショートカット 。これらは、Linux / Unixの世界では一種のショートカットです。さて、シンボリックリンクはWindowsの世界にも存在する可能性がありますが、説明を簡単にするために、シンボリックリンクが 一種のショートカット 今のところ。詳細については後で説明します。シンボリックリンクには、ターゲットファイルの宛先に関する情報が含まれています。
ハードリンクとは何ですか?
ハードリンク (しばしば呼ばれる ハードリンク )は、シンボリックリンクと比較すると少し異なるオブジェクトです。ハードリンクは、ディレクトリ参照またはファイルへのポインタです。ハードリンクは、ディレクトリ構造に格納されているラベルであり、アクセス時にオペレーティングシステムがファイルデータを参照するようにします。重要な部分は、ハードリンクが元のファイルと密接に結びついていることです。 ハードリンクに変更を加えると、ハードリンクが接続されている基になるファイルに自動的に変更が加えられます。
ハードリンクは、同じファイルシステムに存在するデータのみを参照できます。
私たちの多くは、ファイルがフォルダーにあるWindowsに慣れています。 Linux / Unixのファイルはディレクトリに保存されません。 LinuxのファイルにはLinuxがファイルを見つけるために使用するiノード番号。各ファイルには、さまざまなディレクトリにある複数のハードリンクを含めることができます。ファイルへのハードリンクがなくなるまで、ファイルは削除されません。
シンボリックリンクとハードリンクの違い
調査結果を要約しましょう。以下のリストは、シンボリックリンクとハードリンクのいくつかの違いをまとめたものです。
- ディレクトリ(フォルダ)に対して1つまたは複数のハードリンクを作成することはできません。ハードリンクはファイルに対してのみ作成できます。
- シンボリックリンクまたはシンボリックリンクは、ディレクトリ(フォルダ)にリンクできます。
- ハードリンクが指している元のファイルを削除しても、ハードリンク自体は削除されません。ハードリンクは、基になるファイルのコンテンツを提供します。
- ハードリンクまたはシンボリックリンク自体を削除すると、元のファイルはそのまま残ります。
- 元のファイルを削除しても、添付されているシンボリックリンクまたはシンボリックリンクは削除されませんが、元のファイルがないと、シンボリックリンクは役に立ちません(Windowsショートカットと同じ概念)。
さらに詳細を知りたい場合は、このリストをさらに詳しく説明します。 Mklink ページ。概念は、ハードリンクがそれらのソースにより厳密に結び付けられているということです。
シンボリックリンクとショートカットの違いは何ですか?
私たちはそれを述べましたシンボリックリンクは次のようなものですショートカット。彼らです お気に入り ショートカットですが、いくつかの小さな違いがあります。 シンボリックリンク ファイルシステムによって自動的に解決されます。ソフトウェアプログラムは、シンボリックリンクにアクセスすると、プログラムがシンボリックリンクを認識しているかどうかに関係なく、代わりにターゲットを認識します。一方、 ショートカット ファイルシステムおよびそれらを認識しないソフトウェアプログラムによって、通常のファイルのように扱われます。ショートカットを理解するソフトウェアプログラム(Windowsなど)のみが、ショートカットを他のファイルへの参照として扱います。ショートカットは、別のファイルシステムまたはネットワーク上に存在するファイルまたはディレクトリを指すことができます。シンボリックリンクとショートカットの違いは、この記事の下部に記載されている例から明らかです。それぞれ、の大きな印刷画面に示されています。 Mklink ページ。
ハードリンクまたはハードリンクを作成するにはどうすればよいですか?
Linuxでは、lnコマンドを使用してハードリンクを作成します。
$ ln fileA fileB
ここで、fileAは元のファイルで、fileBはハードリンクに付ける名前です。さあ、調べてみましょう。元のファイルとそれに添付された1つのハードリンクがあります。ここで、lsコマンドを使用してこれら2つのオブジェクトを確認します。
$ ls -il fileA fileB
このコマンドの出力で、ファイルfileAとfileBの両方が同じであることがわかります。 iノード番号 (行の最初の番号)。同じiノードを持つことに加えて、両方のファイルは同じです ファイルのアクセス許可 と同じ サイズ 。そのサイズは同じiノードについて報告されているため、ハードリンクがスペースの余分なスペースを占有していないことがわかります。
ここで元のファイルを削除してハードリンクを開くと、元のファイルの内容を引き続き表示できます。
フォルダへのハードリンクは作成できないことに注意してください。フォルダへのハードリンクを作成しようとすると、「アクセスが拒否されました」というメッセージが表示されます。
シンボリックリンクを作成するにはどうすればよいですか?
例を挙げてこれを示しましょう。 Linuxについて話すときは、lnコマンドを使用します。 -s パラメータ。あなたは次のようなことをします:
$ ln -s fileA fileB
ここで、fileAは元のファイルであり、fileBはシンボリックリンクに付ける名前です。ここで、lsコマンドを使用してこれら2つのオブジェクトをもう一度見てみましょう。
$ ls -il fileA fileB
ハードリンクを表示したときとは異なる結果が得られることがわかります。シンボリックリンクと元のファイルの最初の違いは iノード 数。 iノードは元のファイルとシンボリックリンクで異なります。次に、パイプがあることに気付くことができます シンボル シンボリックリンク行の権限の前の「l」。また、シンボリックリンクには 異なる権限 元のファイルよりも(単なるシンボリックリンクであるため)。ザ・ コンテンツ シンボリックリンクのは、元のファイルを指す単なる文字列です。ザ・ サイズ シンボリックリンクのサイズは、元のファイルのサイズと同じではありません。シンボリックリンクは別のエンティティであるため、ハードドライブの一部のスペースを占有します。シンボリックリンクが指している行の終わりに表示されます。
元のファイルを呼び出すか、シンボリックリンクを呼び出すことにより、元のファイルのコンテンツに直接アクセスできます。同じ結果が表示されます。
これで、元のファイルを削除しても、シンボリックリンクはそのまま残ります。元のファイルを削除した後、シンボリックリンクを介して元のファイルのコンテンツにアクセスしようとすると、そのようなファイルまたはディレクトリがないことを示すメッセージが表示されます。
ハードリンクへのシンボリックリンクを作成できますか?
はい。ハードリンクは元のファイルと同じように機能するため、シンボリックリンクを作成できます。この例では、次のコマンドを使用します。
$ ln-sファイル B ファイル C
ここで、fileBはハードリンクの名前であり、fileCは新しいシンボリックリンクの名前です。
Windowsのシンボリックリンクとハードリンクの違いは?
概念のシンボリックリンクとハードリンクの間に多くの違いはありません。LinuxとWindowsのどちらで作業していても、概念は同じです。シンボリックリンクとハードリンクの違いは、それらの作成方法にあります。 MS Windowsについて話すとき、次の3つを作成できます。
- ショートカット
- ハードリンク/ハードリンク
- シンボリックリンク/シンボリックリンク
次の例を参照してください。ザ・ 例 次のページ(サムネイルをクリック)に表示されているのは、Windowsでショートカット、ハードリンク、およびシンボリックリンクを作成する方法と、それらの違いについて説明しています。
WindowsでMKLINKを使用してリンクを作成および使用する方法
このチュートリアルでは、を使用してリンクを作成および使用する方法を説明します。 MKLINK ローカルまたはネットワークストレージの場所に対して行われたシステムクエリを別の場所にリダイレクトします。
このチュートリアルでは、最も重要なリンクタイプであるディレクトリジャンクションに焦点を当てます。ジャンクションは、ファイルの処理と手順をカスタマイズするための非常に実用的な方法です。
に リンク 基本的にはショートカットにすぎません。その目的は、フォルダに物理的に配置されているファイルまたはフォルダをWindowsに認識させることです。 リアル ドライブ上 に 実際にはフォルダにあります 偽 ドライブ上 B 間のリンクを作成することによって B: Fake (リンクまたはジャンクション)および リアル (ターゲットフォルダー)。たとえばエクスプローラーでリンクを開くと、ターゲットのコンテンツが表示され、リンクにドキュメントを保存すると、実際にはターゲットに保存されます。
Windowsがユーザーから開くクエリを取得するようになりました B: Fake このクエリはに送信されます リアル 。実際には場所 B: Fake は存在しませんが、システムはこのクエリに応答します。これは単なるシンボリックリンクではなく実際のフォルダであり、ユーザーに次のコンテンツを提示するためです。 リアル の内容であるかのように B: Fake 。複雑に聞こえますか?心配しないでください。実際、それは非常に簡単です。
パート1:リンクとは何ですか?

に リンク いわゆる ハードリンク 1つのファイルをターゲットファイルにリンクする、または ソフトリンク フォルダをターゲットフォルダにリンクします。ソフトリンクは、 シンボリックリンク 。 3番目のリンクタイプは ジャンクション 、基本的にはハードリンクですが、ハードリンクはファイルのみをリンクできるため、ジャンクションを使用してフォルダーをリンクする必要があります。
Windows Vista以降を使用している場合は、おそらく気付かないうちにリンクを使用したことがあります。 Windows XPでは、すべてのユーザーデータはというフォルダに保存されていました C: Documents and Settings (デフォルトの名前と場所)。 WindowsVistaは代わりにこれを変更しました ドキュメントと設定 データは2つのシステムフォルダに分割されました。 C: Users ユーザー固有のアプリケーションデータと個人のファイルとフォルダー、および C: ProgramData すべてのユーザーがアプリケーションデータを共有しました。 Vistaにはリンクがあるため、すべてのWindowsバージョンに下位互換性を持たせるため C: Documents and Settings ProgramDataとUsersの2つのターゲットフォルダーがあります。
保護されたシステムファイルとフォルダを表示できるようにし、エクスプローラーでC:ドライブを開くと、これを自分で確認できます。
(Windows 8のスクリーンショットですが、リンクはWindows 7でも同じように機能します。黄色で強調表示= Windowsインストールによって作成された表示システムフォルダー、赤=非表示または保護されたシステムフォルダー。)
ドキュメントと設定を開こうとすると、「アクセスが拒否されました」というメッセージが表示されます。それは存在しません。C:ドライブにそのようなフォルダはありませんが、レガシーソフトウェアに必要です。
例:インストールしたい Microsoft Office XP Windows7で。OfficeXPはVistaよりずっと前にWindowsXP用に公開されていたため、XPシステムフォルダを使用します。 ドキュメントと設定 ユーザーデータを保存します。 Vista以降のWindowsにはこのフォルダがないため、リンクが必要です。 Office XPのセットアップでは、通常は[ドキュメントと設定]でファイルとフォルダーが作成されていると見なされますが、実際にはWindows7は嘘をついています。 Office XPのセットアップでは、これらのファイルとフォルダーが実際にユーザーとProgramDataで作成されていることを伝えていません。 Office XPのセットアップはこの欺瞞に気づかず、インストールは機能し、後でユーザーがOffice XPを使用すると、ドキュメントと設定フォルダーがそこにあると見なされ、そのフォルダーへのすべてのクエリがさらに送信され、実際に送信されたかのように返されるという事実を知ることはありません。ドキュメントと設定から。
パート2:ディレクトリジャンクションの操作
(1.)コマンド構文
リンクはコマンドで作成されます mklink 、MakeLinkから短い。タイピング mklink /? コマンドプロンプトで、コマンド構文とオプションを取得します。
MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
(2.)高度なコマンドプロンプトを使用する
あなたは使用する必要があります 昇格したコマンドプロンプト リンクを操作します。
(3.)リンクまたはジャンクションを作成する
ディレクトリジャンクションの作成 D: Docs ターゲット付き E: Users Kari Documents :
mklink /j D:Docs E:UsersKariDocuments
Windowsは、junctionの作成が成功したかどうかを明確に示します。
(4.)リンクまたはジャンクションを作成する際の主な原則
- 目的のリンク名のファイルまたはフォルダが存在しない可能性があります。リンクファイルまたはフォルダ名は、既存のファイルまたはフォルダによって予約されているのではなく、自由に使用できる必要があります。名前が予約されている場合は、エラーメッセージが表示されます。私のD:ドライブにはすでにフォルダーTestがあります。これは、D: Test(既存のフォルダー)をリンクとして、E: Usersをターゲットとしてジャンクションを作成しようとすると発生します:
- ターゲットフォルダは存在する場合がありますが、存在してはなりません。リンクの作成時に存在しない場合は、リンクを使用する前に作成する必要があります。
- 目標 別のことができます リンク 。上記(3.)でジャンクションを作成しました D: Docs ターゲット付き E: Users Kari Documents 。次のコマンドはリンクを作成します C:ドキュメント ターゲット付き D: Docs :
コード:mklink /j C:Docs D:Docs
実際、Windowsは、ターゲットが実際の物理フォルダーの場所であるか、別のリンクであるかを認識しません。この場合、すべてのクエリは C:ドキュメント に送信されます D: Docs それらをさらに送信します E: Users Kari Documents 。ユーザーが今開いている場合 C:ドキュメント エクスプローラーでは、の内容が表示されます E: Users Kari Documents :
(5.)リンクを削除または名前変更します
リンクとジャンクションは、実際のフォルダーと同じように名前を変更したり削除したりできます。システムは自動的にレジストリを変更し、名前が変更されたリンクのターゲットを元のリンクと同じになるように設定します。
これは、実際には存在していなくても、システムがリンクを実際の既存のフォルダーであるかのように処理するためです。これは、エクスプローラーが要求されたときに表示されるものです プロパティ ジャンクションの例 D: Docs :
それを実際に確認する唯一の方法は、実際にはジャンクションであり、コマンドプロンプトでディレクトリリストを取得することです。
リストには、それがジャンクションであるだけでなく、そのターゲットフォルダも示されています。
パート3:実際の例
典型的な状況:ルートレベルのフォルダーにインストールする必要があるゲームを購入した C: Games 。きみの C: ドライブがいっぱいになっているので、全体を移動することにします C: Games フォルダに D: 、空のC: Gamesを削除し(リンクフォルダーが存在しない可能性があることを忘れないでください)、ジャンクションを作成します。
mklink /j C:Games D:Games
ゲームを起動するとき、それはまだCにあると想定します:あなた、私、そしてWindowsはもっとよく知っていますが :それは「密かに」D:にありますが、それでもC:の古いアドレスを使用しています。
別の状況:昨年のクリスマスの写真をいくつか編集して、自分のWebサイトに公開できるように編集したいとします。写真は現在にあります X: Backups Pictures My Pictures Holidays Christmas 2012 。
ジャンクションを作成できます X: Pics 、そして今、あなたがそれらの写真で働きたいときはいつでもあなたはただタイプするだけです X: Pics ダイアログを実行して正しいフォルダを開きます。
mklink /j X:Pics 'X:BackupsPicturesMy PicturesHolidaysChristmas 2012'
パスにスペースが含まれている場合は、上記のターゲットパスのように引用符で囲む必要があることに注意してください。
それについてです。フィードバックを歓迎します。
Kari
転載:https://www.cnblogs.com/shangdawei/p/4516869.html