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

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

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

Antwort1

Ich denke, der wichtige Punkt ist, dass Verknüpfungen nur Dateien sind. Sie haben eine Größe (eine kleine, die nur angibt, wohin sie zeigen) und um verwendet werden zu können, muss eine Anwendung diesen Dateityp unterstützen.

Ein symbolischer Link ist auf Dateisystemebene und wird von allen gesehenalsdie Originaldatei. Eine Anwendung benötigt keine spezielle Unterstützung, um einen symbolischen Link zu verwenden.

Antwort2

Ein „symbolischer Link“ kann tatsächlich auf funktionale Weise als Ersatz für ein Verzeichnis oder eine Datei fungieren und wird häufig in Unix-/Linux-Umgebungen verwendet. Obwohl es in Windows anscheinend Unterstützung dafür gibt, habe ich bisher noch keine tatsächliche Verwendung davon gesehen.

Eine „Verknüpfung“ ist einfach eine normale 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 in DOS nicht „cd ./Verknüpfungsname“ verwenden (in Unix/Linux können Sie „cd ./Symlink-Name“ verwenden und es funktioniert wie ein echtes Unterverzeichnis).

Darüber hinaus wird in den meisten Windows-Anwendungen, wenn Sie in einem GUI-Dialogfeld „Datei -> Öffnen“ auf eine Verknüpfung klicken, Ihr Dateinamenfeld mit dem Dateinamen dieser Verknüpfung gefüllt und es verhält sich wie ein Unterverzeichnis, während in Unix/Linux die GUI einen symbolischen Link als Pfad behandelt (ohne das Dateinamenfeld zu ändern).

Antwort3

Wie andere bereits erwähnt haben, ist ein symbolischer Link eine der Arten von Links, die auf Dateisystemebene verfügbar sind, was ihn für Anwendungen transparent macht. Ich habe festgestelltdiese Dokumentationsehr hilfreich (insbesondere der Abschnitt „Äußere Verbindungen/symbolische Links zuschneiden/aufrollen/zusammenfügen“). Und das Tool dort sieht auch gut aus. (Durch die Erwähnung davon und von mklink werden hoffentlich mehr Suchende diese Diskussion finden.)

Eine Verknüpfung ist eine Datei, kein echter Link, und sie wird im Allgemeinen nur dann erfolgreich als Link verfolgt, wenn sie von der Windows-Benutzeroberfläche (UI) interpretiert wird. Wenn Sie beispielsweise auf eine Ordnerverknüpfung doppelklicken, leitet Windows Sie an diesen anderen Speicherort weiter. (Dies schließt die allgemeinen Dialoge „Datei öffnen“ und „Datei speichern“ ein, die die meisten Anwendungen aufrufen.) Auf meinem Desktop habe ich eine Verknüpfung zu diesem Ordner: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\G

Der Dateiname der Verknüpfung lautet: C:\Benutzer\Benutzer5\Desktop\Spiele.lnk, obwohl Windows die Erweiterung .lnk unterdrückt und nur „Spiele“ anzeigt, selbst wenn Sie „Erweiterungen für bekannte Dateitypen verbergen“ deaktivieren. Wenn Sie jedoch eine Eingabeaufforderung öffnen und ein Verzeichnis ausführen, sehen Sie es:

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 symbolischen Link 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>

(Eine Verzeichnisverbindung (\J) ist ebenfalls eine Option, da es sich hierbei um einen Ordnerlink handelt.) Der Windows Explorer ermöglicht Ihnen, genau wie diese Konsole und die meisten Anwendungen, „nach unten in“ dieses scheinbare Unterverzeichnis zu blättern, anstatt (a) „hinüber“ an einen anderen Ort umzuleiten oder (b) einen Fehler zu verursachen.

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"

Wohingegen 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 ist es nicht möglich, das Verzeichnis in eine Verknüpfung zu ändern:

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

Über die Windows-Benutzeroberfläche können Sie mit der rechten Maustaste die Eigenschaften einer Verknüpfung bearbeiten. Alternativ zeigt das Folgende genau, was tatsächlich in der .lnk-Datei gespeichert ist (Binärdaten), obwohl ein Hex-Editor die Anzeige verbessern würde:

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

Beim Versuch, Notepad auf einem tatsächlichen Unterordner auszuführen, wird die Fehlermeldung „Zugriff verweigert“ und ein leerer Notepad angezeigt.

Wenn ich dagegen einen Datei-Symlink (kein Ordner-Symlink) erstelle, kann ich ihn mit Notepad starten. Von den folgenden Aufrufen von notepad.exe funktionieren die ersten beiden, der dritte schlägt fehl (er öffnet die .LNK-Datei, das binäre Kauderwelsch).

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 Konsolensache. Wenn ich eine Verknüpfung zu Notepad auf meinen Desktop kopiere und versuche, alle drei per Drag & Drop darauf zu ziehen, zeigt sich genau dasselbe Verhalten. (Weil Drag & Drop im Gegensatz zu Doppelklicken die Anwendung die Verknüpfung interpretieren lässt.)

Informationen zu den Unterschieden zwischen Verzeichnis-Symlinks und Junctions finden Sie unterdiese Diskussion, und hier ist ein sehrhilfreiche Beschreibung:

"Ein wesentlicher Unterschied in der Art und Weise, wie Windows symbolische Links und Verzeichnisverbindungen auflöst, besteht darin, wo die Verarbeitung stattfindet. Windows verarbeitet symbolische Links auf dem lokalen System, selbst wenn sie auf einen Speicherort auf einem Remote-Dateiserver verweisen. Windows verarbeitet Verzeichnisverbindungen, die auf einen Remote-Dateiserver verweisen, auf dem Server selbst. Symbolische Links auf einem Server können daher auf Speicherorte verweisen, die nur von einem Client aus zugänglich sind, wie andere Client-Volumes, wohingegen dies bei Verzeichnisverbindungen nicht möglich ist. Um dieses Problem zu lösen, unterstützt Windows Vista den neuen symbolischen Linktyp sowohl für Dateien als auch für Verzeichnisse.

"Viele Dateisystembefehle wurden aktualisiert, um die Auswirkungen symbolischer Links zu verstehen. Beispielsweise weiß der Befehl Löschen, dass Links nicht gefolgt werden sollen, was zur Löschung des Ziels führen würde, sondern stattdessen der Link gelöscht werden soll. Da jedoch möglicherweise nicht alle Anwendungen symbolische Links korrekt verarbeiten, ist zum Erstellen eines symbolischen Links das neue Privileg „Symbolischen Link erstellen“ erforderlich, über das standardmäßig nur Administratoren verfügen."

Antwort4

Manchmal ist es gut, ein funktionierendes Beispiel zu haben, daher erkläre ich, wie ich diese Funktion verwende.

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

Ich verwende die native Stikynot-App von Windows und wollte meine Notizen sichern, also habe ich hier einen symbolischen Link verwendet. Google Drive erkennt den Link als tatsächliche Datei und synchronisiert die Dateien problemlos, 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 Tastenkombinationen (Tastenkombination Kopieren, Einfügen -> Einfügen).

verwandte Informationen