Vor kurzem wurde ich während eines Vorstellungsgesprächs danach gefragt. Ich war ehrlich und sagte, dass ich wusste, wie sich ein symbolischer Link verhält und wie man einen erstellt, aber ich verstehe nicht den Einsatz eines Hardlinks und wie er sich von einem symbolischen unterscheidet.
Antworten
Zu viele Anzeigen?Von MSDN,
Symbolischer Link
Ein symbolischer Link ist ein Dateisystemobjekt, das auf ein anderes Dateisystemobjekt verweist. Das Objekt, auf das verwiesen wird, wird als Ziel bezeichnet.
Symbolische Links sind für Benutzer transparent; die Links erscheinen als normale Dateien oder Verzeichnisse und können vom Benutzer oder der Anwendung genauso behandelt werden.
Symbolische Links sind dazu gedacht, bei der Migration und Anwendungskompatibilität mit UNIX-Betriebssystemen zu helfen. Microsoft hat seine symbolischen Links so implementiert, dass sie genauso funktionieren wie UNIX-Links.
Symbolische Links können entweder absolute oder relative Links sein. Absolute Links sind Links, die jeden Teil des Pfadnamens angeben; relative Links werden relativ dazu bestimmt, wo sich relative Link-Spezifizierer in einem angegebenen Pfad befinden.
Ein Beispiel für einen absoluten symbolischen Link
X: "C:\alpha\beta\absLink\gamma\file"
Link: "absLink" wird auf "\\machineB\share" abgebildet
Modifizierter Pfad: "\\machineB\share\gamma\file"
Ein Beispiel für relative symbolische Links
X: C:\alpha\beta\link\gamma\file
Link: "link" wird auf "..\..\theta" abgebildet
Modifizierter Pfad: "C:\alpha\beta\..\..\theta\gamma\file"
Endgültiger Pfad: "C:\theta\gamma\file"
Hardlink
Ein Hardlink ist die Dateisystemdarstellung einer Datei, auf die mehr als ein Pfad auf demselben Volume verweist.
Um in Windows einen Hardlink zu erstellen, navigieren Sie zum Ort, an dem der Link erstellt werden soll, und geben Sie diesen Befehl ein:
mklink /H Link_name Ziel_pfad
Beachten Sie, dass Sie Hardlinks in beliebiger Reihenfolge löschen können, unabhängig von der Reihenfolge, in der sie erstellt wurden. Außerdem können Hardlinks nicht erstellt werden, wenn
- die Verweise auf verschiedene lokale Laufwerke verweisen
- die Verweise Netzlaufwerke enthalten. Mit anderen Worten, einer der Verweise ist ein Netzlaufwerk
- der zu erstellende Hardlink sich im gleichen Pfad wie das Ziel befindet
Junction
NTFS unterstützt einen weiteren Verbindungstyp, der als Junction bezeichnet wird. MSDN definiert ihn wie folgt:
Eine Junction (auch Softlink genannt) unterscheidet sich von einem Hardlink dadurch, dass die Speicherobjekte, auf die sie verweist, separate Verzeichnisse sind, und eine Junction Verzeichnisse verknüpfen kann, die sich auf unterschiedlichen lokalen Volumes auf demselben Computer befinden. Ansonsten funktionieren Junctions genauso wie Hardlinks.
Die fettgedruckten Teile im Hardlink-Abschnitt und Junction-Abschnitt zeigen den grundlegenden Unterschied zwischen den beiden.
Befehl zum Erstellen einer Junction in Windows: Navigieren Sie zum Ort, an dem der Link erstellt werden soll, und geben Sie dann ein:
mklink /J link_name Ziel_pfad
Einfach ausgedrückt, ein Hardlink: ist einfach nur ein neuer Name zu einer Datei hinzufügen, das bedeutet, eine Datei kann gleichzeitig viele Namen haben, alle Namen sind gleichwertig, niemand bevorzugt, Hardlink bedeutet nicht, den gesamten Inhalt der Datei zu kopieren und eine neue Datei zu erstellen, es wird einfach ein alternativer Name erstellt, um bekannt zu sein.
Symbolischer Link (Symlink): ist ein Dateizeiger auf eine andere Datei, wenn der symbolische Link auf eine vorhandene Datei zeigt, die später gelöscht wird, zeigt der symbolische Link weiterhin auf denselben Dateinamen, auch wenn der Name keinen Dateinamen mehr enthält.
Diese Antwort gilt für Webentwickler :
Hard Link: ähnlich wie das Verweisen auf verschiedene Domain-Namen zum gleichen Host
* abc.com und def.com -> zeigen auf die IP 1.2.3.4
* abc.com und def.com -> Dateien in Linux
* IP -> inode in Linux
* Durch Löschen der Domain abc.com können Benutzer immer noch auf Ihre Website über def.com zugreifen oder umgekehrt
* Veränderungen über abc.com wirken sich auf def.com und umgekehrt aus
Sym Link : umleiten einer Domain zu einer anderen Domain
* Wenn Sie auf abc.com zugreifen, wird dies zu def.com umgeleitet, als ob Sie direkt auf def.com zugegriffen hätten
* Entfernen der def.com-Domain wird den Link abc.com unterbrechen
Was Sie als gewöhnliche "Datei" betrachten, sind eigentlich zwei verschiedene Dinge: Die Daten einer Datei und ein Verzeichniseintrag. Wenn Sie einen Hardlink für eine Datei erstellen, erstellen Sie tatsächlich einen zweiten Verzeichniseintrag, der auf dieselben Daten verweist. Beide Verzeichniseinträge haben die genau gleiche Funktionalität; jeder kann verwendet werden, um die Datei zum Lesen zu öffnen. Sie haben also nicht wirklich "eine Datei plus einen Hardlink", sondern "Dateidaten mit zwei Verzeichniseinträgen". Was Sie als Löschen einer Datei betrachten, löscht tatsächlich einen Verzeichniseintrag, und wenn der letzte Verzeichniseintrag für die Daten gelöscht wird, werden auch die Daten selbst gelöscht. Für gewöhnliche Dateien, die nur einen Verzeichniseintrag haben, wird das Löschen des Verzeichniseintrags wie immer die Daten löschen. (Während eine Datei geöffnet ist, erstellt das Betriebssystem einen temporären Link zur Datei, sodass die Daten auch dann erhalten bleiben, wenn Sie alle Verzeichniseinträge löschen, verschwinden sie jedoch, sobald Sie die Datei schließen).
Zum Beispiel erstellen Sie eine Datei A.txt, einen Hardlink B.txt und löschen A.txt. Als Sie A.txt erstellt haben, wurden einige Daten erstellt und ein Verzeichniseintrag A.txt erstellt. Als Sie den Hardlink erstellt haben, wurde ein weiterer Verzeichniseintrag B.txt erstellt, der auf genau dieselben Daten verweist. Wenn Sie A.txt löschen, haben Sie immer noch alle Daten und einen einzelnen Verzeichniseintrag B.txt, genauso als ob Sie von Anfang an eine Datei B.txt erstellt hätten.
Ein symbolischer Link ist einfach eine (fast) gewöhnliche Datei, außer dass sie keine Daten enthält, sondern den Pfad eines anderen Verzeichniseintrags. Wenn Sie die Datei löschen, auf die der symbolische Link verweist, enthält der symbolische Link einen Pfad, der nicht mehr auf einen Verzeichniseintrag verweist; er ist defekt. Wenn Sie den symbolischen Link löschen, ist es wie das Löschen einer anderen Datei, die Datei, auf die er zeigt, bleibt unberührt.
4 Stimmen
Über 'do not understand the use of a hard link' kann es in Build-Systemen verwendet werden, die viele Binärdateien kopieren. Das Erstellen eines Hardlinks anstelle einer tatsächlichen Kopie beschleunigt die Dinge. MSBuild 4.0 unterstützt dies.
20 Stimmen
Ich finde diesen Link sehr nützlich, um es zu verstehen. askubuntu.com/questions/108771/…
3 Stimmen
unix.stackexchange hat eine gute Liste von Aufzählungspunkten... sehr hilfreich, da sie alle Einschränkungen sehr prägnant darstellt und leicht zu überfliegen ist. (viele dieser Aufzählungspunkte behandeln Randfälle/Haken, die nur in den Kommentaren zu dieser Frage erwähnt werden... oder überhaupt nicht erwähnt werden)
1 Stimmen
youtube.com/watch?v=lW_V8oFxQgA