it-swarm.com.de

Was ist der Unterschied zwischen NTFS-Hardlinks und Directory Junctions?

Der Titel sagt schon alles ... was ist der Unterschied? Wann benutze ich eins und wann benutze ich das andere?

Hinzugefügt: Beachten Sie, dass Knotenpunkte , harte Verbindungen und Symbolische (weiche) Links sind drei verschiedene Dinge in NTFS.

76
Vilx-

NTFS-Datendateien werden mit all ihren Attributen als "Inode" mit einer ID gespeichert, und Dateinamen verweisen auf den Inode. Alle Dateien haben einen + Hardlink. Einige Tools können zusätzliche Namen (Hardlinks) erstellen, die auf denselben Inode verweisen, der einen Zähler für die Anzahl der darauf verweisenden Namen enthält. Wenn die Zahl auf Null geht, löscht das Betriebssystem die Datei, den Inode.

Spezielle Tools wie LN können zusätzliche Dateinamen erstellen, die auf vorhandene Inodes verweisen, wobei ein Dateiname verwendet wird, der auf diese verweist. Beachten Sie, dass alle Dateiattribute, einschließlich Datum und Uhrzeit, mit dem Inode und nicht mit dem Dateinamen gespeichert werden.

(Zusätzliche) Hardlinks sind nützlich, wenn Sie möchten, dass verschiedene Namen auf dieselben Daten verweisen, lesen oder schreiben. Sie sparen Platz und Overhead. Sie verprügeln jedoch Programme, die unterschiedliche Namen annehmen und auf unterschiedliche Daten verweisen. Wenn Sie beispielsweise Verweise auf doppelte Dateien durch Hardlinks auf eine einzelne Datei ersetzen, haben Sie alle vorhandenen Sicherungen entfernt! Das Windows-Betriebssystem ist ein Programm, das davon ausgeht, dass unterschiedliche Namen auf unterschiedliche Bitsätze verweisen.

Hardlinks müssen sich auf demselben physischen und logischen Volume befinden.

Sie sind nützlich für:

  • reduzierung der Pfadlängen, da Windows nur etwa 256 Zeichen unterstützt.

  • reduzieren des Speicherplatzes von doppelten Datendateien - Sie können beispielsweise mehrere Sicherungen einer Partition mit mehreren vollständigen Verzeichnisbäumen, aber mit Hardlinks für Dateien durchführen, die sich seit der vorherigen Sicherung nicht geändert haben.

Knotenpunkte sind unübersichtlicher und verwenden Analysepunkte (die ich nicht verstehe). Sie können auf verschiedene physische oder logische Volumes verweisen, müssen sich jedoch auf demselben Computer befinden. Sie können anscheinend wie Symlinks für Verzeichnisse verwendet werden und ermöglichen einen zweiten Namen für dasselbe Ziel, sind jedoch auf einen einzelnen Computer beschränkt und nicht nur auf ein einzelnes Volume.

Nützlich, um Pfadlängen zu reduzieren oder die Arbeit mit mehreren Programmen mit fest codierten Verzeichnisnamen zu vereinfachen.

Gleiche Vorsichtsmaßnahmen auch! Viele Programme nehmen unterschiedliche Namen = unterschiedliche Dateien an.

Und dann gibt es symbolische Links (die über Netzwerke gehen können), Verknüpfungen und PIFs und .....

Auch einige Informationen von Microsoft selbst :

Grundsätzlich wird angegeben, dass feste Links nur für Dateien auf demselben Volume (Laufwerksbuchstabe) und Knotenpunkte nur für Verzeichnisse auf demselben Computer verwendet werden sollen (sie können sich über verschiedene lokale Volumes erstrecken).

32
tOM Trottier

Schnelle Definitionen:

Symbolische Verknüpfung: Eine Verknüpfung zu einer Datei oder einem Verzeichnis auf demselben oder einem anderen Volume (Laufwerksbuchstabe) oder sogar zu einer Remote-Datei oder einem Remote-Verzeichnis (mit UNC als Pfad).

Hard Link: Ein Link zu einer Datei auf demselben Volume (Laufwerksbuchstabe). Jede Datei (Dateidaten) hat mindestens einen festen Link (Dateiname). Durch Löschen aller festen Links wird die Datei effektiv gelöscht.

Junction: Eine Verknüpfung zu einem Verzeichnis auf demselben oder einem anderen Volume (Laufwerksbuchstabe), jedoch nicht zu einem Remoteverzeichnis.


Einzelheiten:

Unter der Annahme, dass Sie unter Windows Vista/7 mit NTFS-Volumes arbeiten, können Sie mit dem Befehlszeilentool MKLINK alle drei Arten von Links erstellen:

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.

Symbolische Links : Ein symbolischer Link ist ein Dateisystemobjekt, das auf ein anderes Dateisystemobjekt verweist (zB: Datei/Verzeichnis).

  • Mit MKLINK können symbolische Verknüpfungen erstellt werden. Mit dem Parameter /D wird eine symbolische Verzeichnisverknüpfung erstellt. MKLINK überprüft nicht, ob das Ziel eine Datei oder ein Verzeichnis ist oder ob das Ziel existiert! Dies bedeutet, dass Sie möglicherweise ungültige Links erstellen können, z. B. einen symbolischen Verzeichnislink zu einer Datei oder einen symbolischen Link zu einer nicht vorhandenen Datei/einem nicht vorhandenen Verzeichnis.

  • Symbolische Verknüpfungen können entweder absolute oder relative Verknüpfungen sein. Absolute Links sind Links, die jeden Teil des Pfadnamens angeben, während relative Links relativ dazu bestimmt werden, wo sich relative Linkspezifizierer in einem angegebenen Pfad befinden.

  • Absolute symbolische Verknüpfungen können auf Dateien/Verzeichnisse auf demselben oder einem anderen Volume sowie auf eine Remote-Datei oder ein Remote-Verzeichnis unter Verwendung des UNC-Pfads verweisen. Relative symbolische Links sind jedoch auf ein einziges Volume beschränkt.

  • Erhöhte Berechtigungen sind erforderlich, um eine symbolische Verknüpfung zu erstellen. Einmal erstellte erhöhte Berechtigungen sind jedoch nicht erforderlich, um die Verknüpfung zu löschen.

Hardlinks : Ein Hardlink ist die Dateisystemdarstellung einer Datei, bei der mehr als ein Pfad auf eine einzelne Datei verweist.

  • MKLINK ermöglicht das Erstellen fester Links (unter Verwendung des Parameters /H) nur für Dateien (nicht für Verzeichnisse). Ein fester Link kann nur von einer Datei auf demselben Volume erstellt werden.

  • Eine Datei mit mehreren festen Verknüpfungen wird nur dann tatsächlich gelöscht, wenn alle festen Verknüpfungen gelöscht sind, d. H. Die Verknüpfungsanzahl erreicht Null. Also hat wirklich jede Datei, die Sie erstellen, mindestens einen festen Link, unabhängig davon, ob Sie MKLINK verwenden oder nicht.

  • Alle Änderungen an dieser Datei sind für Anwendungen, die über die darauf verweisenden festen Links darauf zugreifen, sofort sichtbar. Die Verzeichniseintragsgröße und die Attributinformationen werden jedoch nur für die Verknüpfung aktualisiert, über die die Änderung vorgenommen wurde.

  • Beachten Sie, dass die Attribute in der Datei in jeder festen Verknüpfung mit dieser Datei wiedergegeben werden und Änderungen an den Attributen dieser Datei auf alle festen Verknüpfungen übertragen werden. Wenn Sie beispielsweise das schreibgeschützte Attribut für eine feste Verknüpfung aufheben, um diese bestimmte feste Verknüpfung zu löschen, und mehrere feste Verknüpfungen zur tatsächlichen Datei vorhanden sind, müssen Sie das schreibgeschützte Attribut für die Datei zurücksetzen von einem der verbleibenden Hardlinks, um die Datei und alle verbleibenden Hardlinks wieder in den schreibgeschützten Zustand zu versetzen.

Junctions : Eine Junction (auch als Softlink bezeichnet) unterscheidet sich von einer Hardlink darin, dass die von ihr referenzierten Speicherobjekte separate Verzeichnisse sind und eine Junction Verzeichnisse auf verschiedenen lokalen Volumes verknüpfen kann auf dem gleichen Computer. Ansonsten verhalten sich Junctions zu Hardlinks identisch. Junctions werden durch Analysepunkte implementiert.

  • MKLINK ermöglicht das Erstellen einer Junction (unter Verwendung des Parameters /J) eines Verzeichnisses (und sogar von Dateien, obwohl dies wahrscheinlich als ungültige Verknüpfung angesehen werden sollte).

  • Eine Junction kann als Hardlink-Äquivalent für einen symbolischen Link zu einem Verzeichnis angesehen werden. Ein Junction-Link kann nicht zu einem Remote-Verzeichnis erstellt werden, sondern kann zu einem Verzeichnis auf demselben/einem anderen Volume erstellt werden.


Referenzen:

[1] Harte Links und Junctions: https://msdn.Microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] Erstellen symbolischer Links: https://msdn.Microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] "Directory Junction" vs "Directory Symbolic Link"?

45
moo

Ein fester Link ist nur ein anderer Name für eine Datei. Wenn Sie eine Datei mit dem Namen A.txt haben und über den Link L.txt verfügen, können Sie nach dem Löschen von A.txt weiterhin über L.txt auf die Daten zugreifen. Erst wenn beide Dateien gelöscht sind, ist die Datei weg.

Auf der anderen Seite haben Sie einen sogenannten Softlink (Junction, wenn es sich um einen Ordner handelt, oder einen symbolischen Link, wenn es sich um eine Datei handelt). Wenn Sie in diesem Fall A.txt löschen, ist die Datei wirklich verschwunden. Das Löschen von L.txt hat keinerlei Auswirkungen auf die Datei.

Feste Verknüpfungen können nur auf derselben Partition wie die ursprüngliche Datei verwendet werden, und weiche Verknüpfungen können partitionsübergreifend verwendet werden.

P.S. Datei und Ordner sind in Bezug auf NTFS größtenteils austauschbar.

9
Josip Medved

Hardlink: funktioniert nur für das gleiche Volume.
Junction: beliebiges lokales Volume
Symbolisch: lokales Volume oder UNC-Pfad

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Bonus Chatter

Windows erstellt Junctions und symbolische Links für AppCompat-Zwecke. für solche schlecht geschriebenen Bewerbungen, die denken:

  • C:\Benutzer\Alle Benutzer
  • C:\Benutzer\Standardbenutzer

sind gültig.

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

Gleiches gilt für den Profilordner des Benutzers für Anwendungen, die erwarten, dass Windows XP -Ordner noch heute vorhanden sind:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |
0
Ian Boyd