Was ist der Unterschied zwischen symbolischer Verknüpfung und Verknüpfung?

Was ist der Unterschied zwischen einem symbolischen Link und einer Verknüpfung?

Author: soandos, 2011-03-06

5 answers

Ich denke, der wichtige Punkt ist, dass Verknüpfungen nur eine Datei sind. Sie haben eine Größe (eine kleine, die nur darauf verweist, wo sie zeigen) und sie benötigen eine Anwendung, um diesen Dateityp zu unterstützen, um verwendet zu werden.

Ein symbolischer Link ist Dateisystemebene, und alles sieht es als die Originaldatei. Eine Anwendung benötigt keine spezielle Unterstützung, um einen symbolischen Link zu verwenden.

 64
Author: Phoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-06 17:58:05

Ein "symbolischer Link" kann tatsächlich funktional als Ersatz für ein Verzeichnis oder eine Datei fungieren und wird häufig in Unix/Linux-Umgebungen verwendet. Obwohl dies in Windows anscheinend unterstützt wird, habe ich noch keine tatsächliche Verwendung gesehen.

Eine "Verknüpfung" ist nur eine reguläre Datei, die einen Verweis auf die Zieldatei oder das Zielverzeichnis sowie einige andere Dinge wie das anzuzeigende Symbol enthält. Im Gegensatz zu einem symbolischen Link können Sie nicht " cd ./ shortcut-name " in DOS (unter Unix / Linux Sie können " - cd ./ symlink-name " und es funktioniert wie ein echtes Unterverzeichnis).

Wenn Sie in den meisten Windows-Anwendungen auf eine Verknüpfung in einem beliebigen Datei->GUI-Dialog öffnen klicken, wird Ihr Dateinamenfeld mit dem Dateinamen dieser Verknüpfung gefüllt und verhält sich wie ein Unterverzeichnis, während in Unix/Linux Die GUI behandelt einen symbolischen Link als Pfad (ohne das Dateinamenfeld zu ändern).

 23
Author: Randolf Richardson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-06 17:02:24

Wie andere bereits erwähnt haben, ist eine symbolische Verknüpfung eine der Arten von Links, die auf Dateisystemebene verfügbar sind und für Anwendungen transparent sind. Ich habe diese Dokumentation sehr hilfreich gefunden (esp. der Abschnitt" Äußere Kreuzungen/symbolische Links zuschneiden/abrollen/spleißen"). Und das Werkzeug dort sieht auch gut aus. (Indem Sie dies und mklink erwähnen, werden hoffentlich mehr Suchanfragen diese Diskussion finden.)

Eine Verknüpfung ist eine Datei, kein echter Link, und sie wird im Allgemeinen nur befolgt erfolgreich als Link, wenn von der Windows-Benutzeroberfläche (Benutzeroberfläche) interpretiert. Wenn Sie beispielsweise auf eine Ordnerverknüpfung doppelklicken, leitet Windows Sie an diesen anderen Speicherort weiter. (Dazu gehören die generischen Datei öffnen und Datei speichern Dialoge, die die meisten Anwendungen aufrufen.) Auf meinem Desktop habe ich eine Verknüpfung zu diesem Ordner: C:\ProgramData\Microsoft\Windows\Start Menü\Programme\G

Der Dateiname des Shorcut lautet: C:\Users\user5\Desktop\Games.lnk, obwohl Windows unterdrückt die .lnk Dateierweiterung und zeigt nur "Spiele" an, auch wenn Sie "Erweiterungen für bekannte Dateitypen ausblenden"deaktivieren. Wenn Sie jedoch eine Eingabeaufforderung öffnen und ein Verzeichnis erstellen, wird Folgendes angezeigt:

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

Ich kann das Äquivalent mit einem Symlink erstellen, indem ich die Option \D (für Verzeichnis) verwende:

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>

(Ein Verzeichnisübergang (\J) ist ebenfalls eine Option, da dies eine Ordnerverknüpfung ist.) Windows Explorer, genau wie diese Konsole und die meisten Anwendungen, können Sie "nach unten in" dieses scheinbare Unterverzeichnis, anstatt (a) Umleiten " über" zu einem anderen Ort oder (b) fehlschlagen.

Verknüpfungen verhalten sich nicht wie Unterverzeichnisse. Ich kann das Standarddateiverhalten der Windows-Benutzeroberfläche mit diesem Befehl aufrufen (dies öffnet den Ordner "G"im Windows Explorer):

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

Während mysymlink als echtes Unterverzeichnis aufgeführt ist (siehe Anzahl) und nicht auf diese Weise gestartet werden kann:

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.

Umgekehrt können Sie-Verzeichnis nicht in eine Verknüpfung ändern:

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

Mit der Windows-Benutzeroberfläche können Sie mit der rechten Maustaste eine Verknüpfung bearbeiten. Eigenschaft. Oder, das Folgende zeigt genau, was tatsächlich in der gespeichert ist .lnk-Datei( Binärdaten), obwohl ein Hex-Editor besser angezeigt werden würde:

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

Beim Versuch, den Notizblock in einem tatsächlichen Unterordner auszuführen, wird die Fehlermeldung "Zugriff wird verweigert" und ein leerer Notizblock angezeigt.

Wenn ich umgekehrt einen Dateisymbollink (keinen Ordnersymbollink) erstelle, kann ich ihn mit Notepad starten. Der folgenden Notizblock.exe ruft, die ersten beiden arbeiten, und die dritte schlägt fehl (es öffnet sich die .LNK-Datei, die binäre 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"

Dies ist nicht nur eine Konsole Sache. Kopieren einer Verknüpfung zu Notepad auf meinen Desktop und versuchen, Ziehen und Ablegen jeder der drei auf sie, es zeigt genau das gleiche Verhalten. (Weil Drag & Drop, im Gegensatz zu Doppelklick, lässt die Anwendung die Verknüpfung interpretieren.)

In Bezug auf die Unterschiede zwischen Verzeichnissymbolen und Kreuzungen, siehe diese Diskussion, und hier ist eine sehr [[36]}hilfreiche Beschreibung:

" A-Dur der Unterschied in der Art und Weise, wie Windows symbolische Links und Verzeichnisübergänge auflöst, besteht darin, dass die Verarbeitung stattfindet. Windows verarbeitet symbolische Links auf dem lokalen System, auch wenn sie auf einen Speicherort auf einem Remote-Dateiserver verweisen. Windows verarbeitet Verzeichnisübergänge, die auf einen Remote-Dateiserver auf dem Server selbst verweisen. Symbolische Links auf einem Server können sich daher wie andere Client-Volumes auf Speicherorte beziehen, auf die nur von einem Client aus zugegriffen werden kann, während Verzeichnisübergänge dies nicht können. Zu dazu unterstützt Windows Vista den neuen symbolischen Verknüpfungstyp für Dateien und Verzeichnisse.

" Viele Dateisystembefehle wurden aktualisiert, um die Auswirkungen symbolischer Links zu verstehen. Der Befehl Delete weiß beispielsweise, dass er Links nicht folgen soll, was zum Löschen des Ziels führen würde, sondern stattdessen den Link löschen soll. Da jedoch nicht alle Anwendungen symbolische Links korrekt verarbeiten können, erfordert das Erstellen eines symbolischen Links das neue Create Symbolic Link-Privileg, das nur administratoren haben standardmäßig."

 13
Author: Jon Coombs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-21 22:03:53

" Symbolische Links unterscheiden sich von Shortcuts dadurch, dass sie eine transparent* Pfad zum gewünschten Datenobjekt, mit einer Verknüpfung (.lnk), etwas zu lesen und zu interpretieren den Inhalt der shortcut-Datei und öffnen Sie dann die Datei, auf die sie verweist (dh es ist ein zwei-Schritt-Prozess). Wenn eine Anwendung einen Symlink verwendet, gewinnt sie sofortiger Zugriff auf das vom Symlink referenzierte Datenobjekt (dh es ist ein einstufiger Prozess)."

Quelle: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

 3
Author: ariefcfa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-04-27 16:05:27

Manchmal ist es gut, ein funktionales Beispiel zu haben, also erkläre ich, wie ich diese Funktion benutze.

Ich verwende Google Drive, um Dateien zu sichern, aber manchmal möchte ich Dateien in einem bestimmten Ordner sichern (ich kann sie nicht verschieben ../google drive). Insbesondere bei Windows 10 Universal Apps werden Konfigurationsdateien und dergleichen in Appdata gespeichert, und meistens kann ich diesen Speicherort nicht ändern.

Ich benutze Windows native stikynot App, und ich wollte meine Notizen sichern, also habe ich hier einen Symlink verwendet. Google drive erkennt den Link als tatsächliche Datei und synchronisiert die Dateien einwandfrei, während sich die eigentliche Datei noch im appdata-Ordner befindet.

Wenn ich Dateien wie Projektordner lokal habe, die ich nicht mit der Cloud synchronisieren möchte, verwende ich Verknüpfungen (Kopieren, Einfügen->Einfügen-Verknüpfung).

 0
Author: sommmen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-03-26 11:16:18