web-dev-qa-db-ja.com

シンボリックリンクとショートカットの違いは何ですか?

シンボリックリンクとショートカットの違いは何ですか?

80
deepthi tm

重要な点は、ショートカットは単なるファイルであるということです。それらにはサイズがあり(小さいもの、ポイントする場所を参照するだけ)、使用するためにはアプリケーションがそのファイルタイプをサポートする必要があります。

シンボリックリンクはファイルシステムレベルであり、すべてがそれを認識しますas元のファイル。アプリケーションは、シンボリックリンクを使用するために特別なサポートを必要としません。

59
Phoshi

「シンボリックリンク」は実際には機能的にディレクトリまたはファイルの代用として機能することができ、Unix/Linux環境で一般的に使用されます。これはWindowsでサポートされているようですが、実際に使用したことはまだありません。

「ショートカット」とは、宛先ファイルまたはディレクトリへの参照と、表示されるアイコンなどの他のいくつかのものを含む通常のファイルです。シンボリックリンクとは異なり、DOSでは「cd ./shortcut-name」を実行できません(Unix/Linuxでは「cd ./symlink-name」を実行すると、実際のサブディレクトリのように機能します)。

また、ほとんどのWindowsアプリケーションでは、[ファイル]-> [GUIを開く]ダイアログでショートカットをクリックすると、ファイル名フィールドにそのショートカットのファイル名が入力され、サブディレクトリのように機能しますが、Unix/LinuxではGUIが扱います。パスとしてのシンボリックリンク(ファイル名フィールドを変更しない)。

22

他の人が述べたように、シンボリックリンクは、ファイルシステムレベルで使用できる種類のリンクの1つであり、アプリケーションに対して透過的になります。私は このドキュメント が非常に役立つことを発見しました(特に「クロップ/アンロール/スプライスアウタージャンクション/シンボリックリンク」セクション)。そしてそこにあるツールも素敵に見えます。 (これとmklinkに言及することで、より多くの検索でこの議論が見つかることを期待しています。)

ショートカットは実際のリンクではなくファイルであり、通常、Windows UI(ユーザーインターフェイス)によって解釈された場合にのみ、リンクとして正常にたどります。たとえば、フォルダのショートカットをダブルクリックすると、Windowsはその別の場所にリダイレクトします。 (これには、ほとんどのアプリケーションが呼び出す一般的な[ファイルを開く]ダイアログと[ファイルを保存]ダイアログが含まれます。)デスクトップには、このフォルダーへのショートカットがあります:C:\ ProgramData\Microsoft\Windows\Start Menu\Programs\G

ショートカットのファイル名は次のとおりです。C:\ Users\user5\Desktop\Games.lnk。ただし、Windowsは.lnk拡張子を抑制し、「既知のファイルタイプの拡張子を非表示」をオフにしても、「ゲーム」のみを表示します。しかし、コマンドプロンプトを開いてdirを実行すると、次のように表示されます。

C:\Users\user5\Desktop>dir "g*"
 Volume in drive C has no label.
 Volume Serial Number is 900...
 Directory of C:\Users\user5\Desktop
03/08/2014  05:30 PM             1,710 Games.lnk
               1 File(s)          1,710 bytes
               0 Dir(s)  246,818,222,080 bytes free

\ Dオプション(ディレクトリの場合)を使用して、シンボリックリンクを使用して同等のものを作成できます。

C:\Users\user5\Desktop>mklink /D mysymlink  "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G

C:\Users\user5\Desktop>cd mysymlink

C:\Users\user5\Desktop\mysymlink>

(これはフォルダーリンクであるため、ディレクトリジャンクション(\ J)もオプションです。)Windowsエクスプローラーでは、このコンソールやほとんどのアプリケーションと同様に、(a)リダイレクトするのではなく、この見かけのサブディレクトリを「下に」ブラウズできます。別の場所に「横切って」または(b)失敗。

ショートカットはサブディレクトリのようには動作しません。次のコマンドでWindows UIのデフォルトのファイル動作を呼び出すことができます(これにより、Windowsエクスプローラーの「G」フォルダーが開きます)。

C:\Users\user5\Desktop>"Games.lnk"

一方、mysymlinkは真のサブディレクトリーとしてリストされ(カウントを参照)、そのように起動することはできません。

C:\Users\user5\Desktop>dir "my*"
 Volume in drive C has no label.
 Volume Serial Number is 900...

 Directory of C:\Users\user5\Desktop

03/29/2014  06:08 PM    <DIR>          mysubdir
03/29/2014  05:40 PM    <SYMLINKD>     mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
               0 File(s)              0 bytes
               2 Dir(s)  246,816,153,600 bytes free

C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.

逆に、ディレクトリをショートカットに変更することはできません。

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

Windows UIでは、右クリックしてショートカットのプロパティを編集できます。または、次の例は、実際に.lnkファイル(バイナリデータ)に格納されているものを正確に示していますが、16進エディタの方が表示が優れています。

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

一方、実際のサブフォルダでメモ帳を実行しようとすると、「アクセスが拒否されました」というエラーメッセージと空のメモ帳がポップアップ表示されます。

逆に、ファイルシンボリックリンク(フォルダーシンボリックリンクではない)を作成すると、メモ帳で起動できます。次のnotepad.exe呼び出しのうち、最初の2つは機能し、3つ目は失敗します(.LNKファイルであるバイナリgobbledegookが開きます)。

C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt

C:\Users\user5\Desktop>notepad.exe "symplain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"

これは単なるコンソールではありません。メモ帳へのショートカットをデスクトップにコピーし、3つそれぞれをデスクトップにドラッグアンドドロップしようとすると、まったく同じ動作を示します。 (ダブルクリックとは異なり、ドラッグアンドドロップにより、アプリケーションはショートカットを解釈できます。)

ディレクトリシンボリックリンクとジャンクションの違いについては、 このディスカッション を参照してください。ここに非常に 役立つ説明があります

「Windowsがシンボリックリンクとディレクトリジャンクションを解決する方法の主な違いは、処理が行われる場所です。リモートファイルサーバー上の場所を参照していても、Windowsはローカルシステム上のシンボリックリンクを処理します。リモートを参照するディレクトリジャンクションを処理しますサーバー自体のファイルサーバー。したがって、サーバーのシンボリックリンクは、他のクライアントボリュームのようにクライアントからのみアクセスできる場所を参照できますが、ディレクトリジャンクションは参照できません。これに対処するために、Windows Vistaは両方のファイルの新しいシンボリックリンクタイプをサポートしていますとディレクトリ。

「シンボリックリンクの影響を理解するために、多くのファイルシステムコマンドが更新されました。たとえば、Deleteコマンドは、リンクをたどらないことを認識しています。これにより、ターゲットが削除されますが、代わりにリンクが削除されます。ただし、すべてのアプリケーションがシンボリックリンクを正しく処理する可能性があります。シンボリックリンクを作成するには、デフォルトで管理者のみが持つ新しいシンボリックリンクの作成権限が必要です。

12
Jon Coombs

「シンボリックリンクは、ショートカットとは異なります。ショートカット(.lnk)を使用して、目的のデータオブジェクトへの透過的な*経路を提供します。ショートカットファイルの内容を読み取り、解釈して、それが参照するファイル(つまり、アプリケーションはシンボリックリンクを使用すると、シンボリックリンクによって参照されるデータオブジェクトに即座にアクセスできます(つまり、1ステップのプロセスです)。」

ソース: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

3
ariefcfa

機能的な例があると良い場合もあるので、この関数の使い方を説明しません。

Googleドライブを使用してファイルをバックアップしていますが、特定のフォルダー内のファイルをバックアップしたい場合があります(それらを../googleドライブに移動できません)。特にWindows 10ユニバーサルアプリでは、構成ファイルなどがappdataに保存され、ほとんどの場合、この場所を変更できません。

Windowsネイティブのstikynotアプリを使用していて、メモをバックアップしたいので、ここではシンボリックリンクを使用しました。 Googleドライブはリンクを実際のファイルとして認識し、実際にファイルがappdataフォルダー内にある間は問題なくファイルを同期します。

ローカルでプロジェクトフォルダーのようなファイルをクラウドに同期したくない場合は、ショートカットを使用します(コピー、貼り付け、ショートカットの貼り付け)。

0
sommmen