Was ist der Unterschied zwischen symbolischen und harten Links?

Antworten:

40

Die unterschiedliche Semantik zwischen harten und weichen Links macht sie für verschiedene Dinge geeignet.

Harte Links:

  • Von anderen Telefonbucheinträgen nicht zu unterscheiden, da jeder Telefonbucheintrag ein fester Link ist
  • "original" kann verschoben oder gelöscht werden, ohne dass andere feste Links zum selben Inode unterbrochen werden
  • nur innerhalb desselben Dateisystems möglich
  • Berechtigungen müssen mit denen im "Original" übereinstimmen (Berechtigungen werden im Inode gespeichert, nicht im Verzeichniseintrag)
  • kann nur an Dateien vorgenommen werden, nicht an Verzeichnissen

Symbolische Links (Softlinks)

  • zeichnet diesen Punkt einfach auf einen anderen Dateipfad auf. ( ls -lzeigt, auf welchen Pfad ein Symlink verweist)
  • bricht ab, wenn das Original verschoben oder gelöscht wird. (In einigen Fällen ist es tatsächlich wünschenswert, dass ein Link auf eine Datei verweist, die sich aktuell an einem bestimmten Speicherort befindet.)
  • kann auf eine Datei in einem anderen Dateisystem verweisen
  • kann auf ein Verzeichnis verweisen
  • In einigen Dateisystemformaten kann der Symlink andere Berechtigungen haben als die Datei, auf die er verweist (dies ist ungewöhnlich).
daxelrod
quelle
1
Schöne Liste. Ich wollte nur hinzufügen, dass Sie einen relativen Pfad-Symlink auch unterbrechen können, indem Sie den Symlink selbst verschieben.
jw013
4
"[E] sehr Verzeichniseintrag ist harte Verbindung." Das ist ein ausgezeichneter Punkt, den ich noch nie gesehen habe, aber ich mache mir Sorgen, dass jemand, der gerade anfängt, seine oder Kopf-um-Links zu wickeln, ihn nicht bekommt. Für diejenigen, die in dieser Situation sind, ist hier ein Hinweis: Das Layout der Dateien und Verzeichnisse, das Sie sehen, wenn Sie den Befehl ls ausführen, stimmt nicht genau mit dem Speichersystem überein, das es darstellt. Hardlinks sind Verweise auf eine einzelne Datei auf dem Speichersystem. Eine Datei wird einmal gespeichert. Lesen Sie mehr über "Inodes".
Mario
@ Mario: yup. Jeder Verzeichniseintrag verknüpft einen Namen mit einem Inode. Der Systemaufruf zum Löschen eines Dateinamens wird sogar aufgerufen unlink(2). "normale" Dateien (mit einer Linkanzahl von 1) sind nur ein Sonderfall. Wenn es hilft, können Sie sich Inodes als Objekte und Namen als ref-counted Zeiger vorstellen (die Linkanzahl des Inodes ist die Referenzanzahl).
Peter Cordes
1
Sie können sich einen symbolischen Link als Textdatei mit einem Namen vorstellen. Es wird als symbolischer Link interpretiert, da ein spezielles Flag zur Datei vorhanden ist. Hardlink-Beispiele, die Sie kennen, sind ..und ..
Ned64,
Hier ist eine weitere Antwort, die erklärt, warum keine festen Links zu Verzeichnissen hergestellt werden können . Ich finde diese Antwort hilfreich, weil sie übersichtlicher und leichter zu lesen ist.
Trevor Boyd Smith
18

Der Sinn beider Arten von Links ist es, eine Möglichkeit zu bieten, eine Datei gleichzeitig an zwei Orten anzuzeigen. Dies hat viele Verwendungszwecke. 9 Mal von 10 möchten Sie symbolische Links verwenden.

Symbolische Links oder "Symlinks" funktionieren ähnlich wie Windows-Verknüpfungen. Der Inhalt eines Symlinks ist ein Zeiger auf den tatsächlichen Speicherort der Datei / des Verzeichnisses. Wenn Sie die echte Datei löschen, wird der Symlink "baumeln" und funktioniert nicht mehr. Durch das Löschen des Symlinks wird die eigentliche Datei nicht gelöscht. Sie können so viele Symlinks zu einer einzelnen Datei (oder sogar zu anderen Symlinks) haben, wie Sie möchten.

Im Gegensatz zu Windows funktionieren sie jedoch auf Dateisystemebene, nicht auf Shell- oder Anwendungsebene, sodass so ziemlich jede Anwendung den Symlinks erwartungsgemäß "folgt". ls -alkann verwendet werden, um schnell zu sehen, wohin Symlinks verweisen.

Hardlinks funktionieren auch auf einer niedrigeren Ebene. Ein Hardlink ist ein tatsächlicher physischer Verzeichniseintrag der Datei auf Dateisystemebene. Technisch gesehen handelt es sich bei einem Verzeichniseintrag um einen Hardlink. Daher enthält jede Datei mindestens einen Hardlink in einem Verzeichnis. Hardlinks sind nicht von der Datei getrennt, auf die sie verweisen. Wenn eine Datei mehrere Hardlinks in verschiedenen Verzeichnissen enthält, rmwird die Datei durch Löschen des Hardlinks mit Hilfsprogrammen wie nicht wirklich gelöscht, bis alle Hardlinks verschwunden sind.

Ich kann mir keine Situation vorstellen, in der die Verwendung von Hardlinks üblich ist oder sogar erforderlich ist, es sei denn, Sie möchten absichtlich verhindern, dass Dateien gelöscht werden, oder Sie führen eine seltsame Arbeit auf niedriger Ebene mit Partitionen oder anderen Dingen im Zusammenhang mit dem Dateisystem aus. BEARBEITEN: Es gibt gute Ideen in den anderen Antworten auf diese Frage!

LawrenceC
quelle
Symlinks haben Berechtigungen wie normale Dateien, werden jedoch vom Betriebssystem nicht abgefragt. Stattdessen wird die Datei mit den Berechtigungen herangezogen, um das Verhalten zu bestimmen. Und machen Sie keine kreisförmigen Ketten von Symlinks. Sehr schlecht.
LawrenceC
3
Ist es wirklich sehr schlimm? Was wird passieren? Die größte Aufregung, die ich erzeugen kann, sind die Fehlermeldungen "Zu viele Ebenen symbolischer Links".
Mattdm
1
ls -list genug um zu sehen was durch einen symlink verlinkt wird, der asteht für --all, siehe manpage. Und selbst wenn Symlinks im Dateisystem funktionieren, gibt es alternative Funktionen, um symbolische Links als Dateien zu verwenden, anstatt zu folgen.
D4RIO
4
Windows-Verknüpfungen unterscheiden sich erheblich von Symlinks: Sie folgen ihrem Ziel und sind auch reguläre Dateien. (Windows hat auch Symlinks, die jedoch nicht häufig verwendet werden.) Symlinks sind reine Textlinks. Der Zieltext wird gelesen, wenn Sie auf die Datei zugreifen. Ob Symlink-Berechtigungen von Bedeutung sind, hängt vom Betriebssystem und dem Dateisystem ab.
Gilles 'SO - hör auf böse zu sein'
AFAIK, der Inhalt einer Symlink-Datei ist der Pfad, auf den der Symlink verweist. Betrachtet man die Größe der Symlink-Datei, ln -s /home 1; ls -l 1zeigt dies, dass der Symlink 1 5 Bytes lang ist, während ln -s /usr/share/ 2; ls -l 22 11 Bytes lang ist.
Daniel Kullmann
13

Feste Verknüpfungen sind sehr nützlich für festplattenbasierte Sicherungsmechanismen, da Sie für jede Sicherung einen vollständigen Verzeichnisbaum erstellen können, während Sie den Speicherplatz für Dateien freigeben, die sich nicht geändert haben Eine bestimmte Version verschwindet, weil das Backup aus Platzgründen abgelaufen / entfernt wurde. Der verwendete Platz wird automatisch zurückgefordert. Einige E-Mail-Clients verwenden es aus demselben Grund auch für Nachrichten, die in mehreren Ordnern abgelegt werden.

Geekosaurier
quelle
5
Vielleicht plattenbasierte Versionskontrollmechanismen? Wenn Sie etwas fest verlinken, handelt es sich nicht um ein Backup. Wenn die Originaldatei beschädigt wird, wird auch jeder Hardlink dazu beschädigt.
D4RIO
1
Denken Sie an inkrementelle Backup-Systeme wie die Time Machine von Apple. (Es sollte offensichtlich sein, dass es sich nicht um Backups vom Typ Disaster Recovery handelt, sondern um Backups vom Typ "Hoppla, ich habe diese Datei versehentlich gelöscht".) Alle unveränderten Dateien in einem inkrementellen Backup sind fest miteinander verknüpft. Wenn die Datei geändert wird, wird sie beim nächsten inkrementellen Kopieren kopiert, anstatt eine Verknüpfung zur vorherigen Version herzustellen.
Geekosaurier
Danke, dann sind inkrementelle Sicherungssysteme den Versionskontrollsystemen auf diese Weise ziemlich ähnlich = D
D4RIO
Aber wie bewahrt der inkrementelle Sicherungsmechanismus die "alte" Version einer Datei? 1) Backup A erstellt, es ist eine fest verbundene Datei F; 2) Datei F modifiziert; 3) Backup B am nächsten Tag erstellt ... Es sieht so aus, als ob ich nichts verstehe
Dmitry Pashkevich
3

Hardlinks sind lediglich Verweise auf denselben Speicherplatz, dh, Sie können keine Hardlinks in einem anderen Dateisystem erstellen.

Symlinks sind Dateien, die andere Dateien verknüpfen (als Windows-Verknüpfungen), möglicherweise im selben Dateisystem, möglicherweise jedoch nicht.

EDIT: Ich werde noch etwas erklären. Jede Datei, die existiert, hat mindestens 1 festen Link. Hardlinks sind der Weg, um auf den Inhalt eines Inodes des Dateisystems zuzugreifen. Sie können die Inode-Nummer einer Datei mit ls -iund die Anzahl der Hardlinks mit statwie folgt in diesem Beispiel erhalten:

$ stat plantilla-disenos.odt 
  File: «plantilla-disenos.odt»
  Size: 12367       Blocks: 32         IO Block: 4096   fichero regular
Device: 803h/2051d  Inode: 319875      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   d4rio)   Gid: ( 1000/   d4rio)
Access: 2011-02-11 21:36:19.000000000 -0300
Modify: 2010-03-02 23:27:28.000000000 -0300
Change: 2010-04-10 17:46:27.000000000 -0300

Vielen Dank an @geekosaur für diesen Hinweis:

Der Kernel muss die Übersetzung von Pfadname zu Inode (über den Verzeichnisbaum) neu starten, um Symlinks zu erweitern, während harte Links alle denselben Inode verwenden. (Dies wird häufig als namei bezeichnet, wie aus dem Namen der Kernelfunktion hervorgeht, die dies in traditionellem Unix durchgeführt hat.)

und dies (bearbeitet):

Feste Verknüpfungen sind sehr nützlich für festplattenbasierte inkrementelle Sicherungsmechanismen wie z. B. Time Machine von Apple , da Sie für jede Sicherung einen vollständigen Verzeichnisbaum erstellen können, während Sie den Speicherplatz für Dateien freigeben, die sich nicht geändert haben Wenn der letzte Verweis auf eine bestimmte Version verschwindet, weil das Backup aus Platzgründen abgelaufen / entfernt wurde, wird der verwendete Platz automatisch zurückgefordert. Einige E-Mail-Clients verwenden es aus demselben Grund auch für Nachrichten, die in mehreren Ordnern abgelegt werden.

Prost

D4RIO
quelle
Sind die Leistungsvorteile bei der Verwendung von Hardlinks? Oder warum würden Sie jemals einen Hardlink anstelle eines Symlinks verwenden?
Ripper234
Der Kernel muss die Übersetzung von Pfadname zu Inode (über den Verzeichnisbaum) neu starten, um Symlinks zu erweitern, während harte Links alle denselben Inode verwenden. (Sie werden dies häufig namei
anhand
@ ripper234: Hardlinks sind platzsparende Lösungen. Sie müssen sich nicht mit dem Dateisystem auskennen, um einen Symlink zu erstellen, aber Sie müssen überlegen, bevor Sie Symlinks erstellen, da Sie eine Schleife oder einen langen Auflösungspfad erstellen können, sodass Funktionen wie statfehlschlagen.
D4RIO
@geekosaur: Ich füge deine Antwort meiner hinzu, da es sehr nützlich ist
D4RIO
Kein Problem. Eigentlich habe ich angefangen, es als Kommentar für Sie zu schreiben, aber die Kommentare sind zu kurz.
Geekosaurier
3

Ein Softlink verweist auf einen anderen Pfadnamen. Dieser Pfadname kann tatsächlich existieren oder auch nicht. Der Pfad wird erst gesucht, wenn Sie auf den Symlink zugreifen. Wenn der Pfad beim Versuch, darauf zuzugreifen, nicht existiert, ist der Symlink defekt.

Mit einem festen Link haben Sie eine Datei mit mehreren Namen. Man kann nicht sagen, dass eine davon die "echte" Datei ist und die anderen nur ein Link dazu sind. Sie sind alle gleich. Es gibt keine kaputten harten Links wie kaputte Symlinks.

Feste Links funktionieren nur innerhalb eines einzelnen Dateisystems. Wenn Sie eine Verknüpfung zu einer Datei in einem anderen Dateisystem (z. B. einer anderen Partition oder einer Netzwerkfreigabe) herstellen möchten, müssen Sie eine weiche Verknüpfung verwenden.

Ein weiterer großer Unterschied ist, was passiert, wenn Sie eine verknüpfte Datei löschen. Wenn Sie eine von zwei fest verknüpften Dateien löschen und dann eine neue Datei mit demselben Namen erstellen, haben Sie zwei separate Dateien (die Verknüpfung ist nicht mehr vorhanden). Wenn Sie das Ziel eines Symlinks löschen und eine neue Datei mit demselben Namen erstellen, verweist der Link auf die neue Datei.

cjm
quelle
3

"harte" Links teilen sich den gleichen Inode

$ touch foo
$ ln foo foolink # Creates a hard  link
$ ls -li foo foolink
54996 -rw-r--r-- 2 bsd users 0 2011-12-11 09:06 foo
54996 -rw-r--r-- 2 bsd users 0 2011-12-11 09:06 foolink

Wenn ich entweder foo oder foolink bearbeite, gibt es nur eine Datei und diese wird aktualisiert. Wenn ich nur einen der Dateinamen entferne, bleiben der Inode und die Daten erhalten, und der Foolink überlebt.

$ rm foo
$ ls -li foo foolink
ls: cannot access foo: No such file or directory
54996 -rw-r--r-- 1 bsd users 0 2011-12-11 09:06 foolink

Wenn ich dasselbe erstellen würde, jedoch mit einem "weichen" oder symbolischen Link, dann gäbe es eine Datei, einen Inode und eine neue Datei mit einem eigenen Inode, der auf den ersten verweist.

$ touch foo
$ ln -s foo foolink # Create symlink
$ ls -li foo foolink
55029 -rw-r--r-- 1 bsd users 0 2011-12-11 09:11 foo
55033 lrwxrwxrwx 1 bsd users 3 2011-12-11 09:11 foolink -> foo

Wenn ich entweder foo oder foolink bearbeite, gibt es immer noch nur eine Datei und sie wird aktualisiert.

Wenn ich nur den Symlink entferne, bleiben der Inode und die Daten erhalten. Wenn ich foo entferne, gehen die Daten verloren, der Symlink bleibt bestehen, verweist aber auf eine nicht vorhandene Datei.

$ rm foo
removed `foo'
$ ls -l foo foolink 
ls: cannot access foo: No such file or directory
lrwxrwxrwx 1 bsd bsd 3 2011-12-11 09:11 foolink -> foo
bsd
quelle
1
Aber was ist ein praktischer Anwendungsfall dafür?
ewwhite
1
Eine Verwendung, genau wie eine "Abkürzung" Eine andere Verwendung, bei der mehrere Versionen einer Anwendung auf einem System vorhanden sind, ermöglicht die Installation, das Testen einer neuen Version und die Angabe der Anwendung anhand des vollständigen Pfads, während der Symlink im Bin auf die Produktion verweist. Nachdem der Test abgeschlossen ist, ändern Sie den Symlink auf eine neue Version. Belassen Sie die alte Version für alle Benutzer mit versionsabhängigem Code. Denken Sie an Perl, Python usw.
bsd
1
praktischer Use-Case für harte Links. Derzeit habe ich auf meinem Dateisystem eine große Anzahl von Hardlinks in / usr / share / zoneinfo gefunden. Denken Sie an alle genannten Dateien, die Zeitzonen darstellen und mit EST identisch sind. Wir sparen Speicherplatz im Dateisystem, da keine redundanten Kopien vorhanden sind, und ermöglichen eine einfachere Paketverwaltung, ohne dass der Verwaltungsaufwand für die Installation / Löschung von Symlinks beim Installieren / Löschen von Paketen anfällt. Auch wenn eine entfernt wird, bleiben die ursprünglichen Daten erhalten. Entschuldigung, ich hatte keine Zeit für eine pedantischere Erklärung.
Bsd
1

Hardlinks sind zusätzliche Verzeichniseinträge für dieselbe Datei. Das bedeutet

  • Alle festen Verknüpfungen zu einer Datei müssen sich im selben Dateisystem befinden (da ein Verzeichniseintrag nicht auf eine Datei in einem anderen Dateisystem verweisen kann), aber nicht unbedingt im selben Verzeichnis.
  • Es gibt keinen Unterschied zwischen dem ursprünglichen Verzeichniseintrag und dem neuen festen Link. Aus Sicht des Betriebssystems handelt es sich lediglich um zwei Verzeichniseinträge in derselben Datei. Eine Datei wird nur gelöscht, wenn alle festen Verknüpfungen gelöscht wurden (und darüber hinaus ist kein Prozess mehr vorhanden, bei dem diese Datei noch geöffnet ist).
  • Wenn Sie das "Original" verschieben / umbenennen, sind die anderen festen Links nicht betroffen, solange Sie es nicht in ein anderes Dateisystem verschieben. Sie zeigen immer noch auf dieselbe Datei.
  • Viele Editoren schreiben den neuen Inhalt beim Speichern nicht in dieselbe Datei, sondern gehen wie folgt vor:

    1. Schreiben Sie den neuen Inhalt in eine neue Datei.
    2. Benennen Sie die alte Datei in einen Sicherungsnamen um (oder löschen Sie sie einfach, wenn keine Sicherungen der vorherigen Dateiversion erstellt werden).
    3. Benennen Sie die neu geschriebene Datei in den Namen der vorherigen Datei um.

    Dieses Schema bedeutet, dass alle anderen festen Links zu derselben Datei nicht mehr auf die aktuelle Datei verweisen, sondern auf die vorherige Version (dies gilt auch für den Fall, dass der Editor die alte Datei löscht, da unter Unix eine Datei "gelöscht" wird bedeutet nur das Löschen seines Links; nur wenn der gelöschte Link der einzige Link ist, wird die eigentliche Datei gelöscht).

  • Da der feste Link direkt auf die Datei verweist, können Sie auf diese Datei zugreifen, auch wenn Sie keinen Zugriff auf den ursprünglichen Speicherort dieser Datei haben (z. B. weil Sie keine Berechtigungen für das Verzeichnis haben, in dem sich der ursprüngliche Eintrag befindet). . Die einzigen Rechte, die Ihren Zugriff bestimmen, sind die Zugriffsrechte der Datei selbst (die mit der Datei verknüpft sind, nicht mit dem Link; Sie können keine festen Links mit unterschiedlichen Berechtigungen für dieselbe Datei erstellen) und die Zugriffsrechte für den Pfad des festen Links ist enthalten in (im Grunde genommen die Ausführungsrechte des Verzeichnisses, in dem sich der Link befindet, sowie alle direkten und indirekten übergeordneten Verzeichnisse).

Symbolische Verknüpfungen dagegen speichern den Pfadnamen (den Namen der Datei - oder vielmehr ihren Verzeichniseintrag - möglicherweise einschließlich ihres Pfades, wie /bin/shoder subdir/foo.bar) - einer anderen Datei. Wenn der Pfadname relativ ist, wird er immer relativ zu dem Verzeichnis interpretiert, in dem sich der Link befindet. Das bedeutet:

  • Eine symbolische Verknüpfung kann auf Dateien in einem anderen Dateisystem verweisen (auch auf ein Dateisystem, das selbst keine festen oder weichen Verknüpfungen wie FAT unterstützt).

  • Wenn die Originaldatei gelöscht wird, behält der symbolische Link den Dateiinhalt nicht bei. Sofern keine anderen festen Links zu derselben Datei vorhanden sind, wird der Dateiinhalt gelöscht. Der symbolische Link bleibt dann hängen (dh er verweist auf einen Pfadnamen, der keinem Verzeichniseintrag entspricht). Das Löschen des symbolischen Links wirkt sich hingegen nicht auf die Originaldatei aus, da nur auf den Pfadnamen verwiesen wird.

  • Wenn die Originaldatei verschoben oder umbenannt wird, wird der symbolische Link nicht aktualisiert, sondern bleibt hängen. Wenn Sie die symbolische Verknüpfung verschieben, wird sie nur dann unterbrochen, wenn sie einen relativen Pfad enthält und der Pfad ab der neuen Position nicht mehr gültig ist.

  • Wenn die ursprüngliche Datei durch eine neue Datei mit demselben Namen ersetzt wird (wie im oben beschriebenen Editor-Szenario), verweist der Link auf die neue Datei.

Bei den meisten Verwendungen von festen Links handelt es sich um eine Möglichkeit, eine Kopie einer Datei zu erstellen, ohne den Dateiinhalt zweimal speichern zu müssen. Dies funktioniert am besten, wenn die Dateien nie wieder geändert werden, da ansonsten die Verknüpfung leicht versehentlich unterbrochen werden kann (siehe das obige Editor-Szenario). Es gibt natürlich Fälle , in denen Sie mögen die Verbindung unterbrochen werden, wie im Fall von mehreren Sicherungen zu halten: Bei Dateien , die in neueren Backups geändert haben, müssen Sie die Kopie nicht wollen in älteren Backups als auch ändern.

Wenn Sie einen Link wünschen, verwenden Sie normalerweise einen symbolischen Link. Wenn Sie beispielsweise ein Verzeichnis auf eine andere Partition verschieben (weil die Partition, auf der es sich befindet, voll ist), können Sie eine weiche Verknüpfung von der alten zur neuen Position einrichten, sodass alle Programme, die versuchen, auf das Verzeichnis an der alten Stelle zuzugreifen, dies tun greifen Sie stattdessen auf den neuen Ort zu. Dies wäre mit harten Links nicht möglich. Beachten Sie jedoch, dass symbolische Links im verschobenen Verzeichnis beschädigt werden können, wenn sie relative Pfade enthalten, die aus dem verschobenen Verzeichnis herausführen.

Celtschk
quelle
1

HARD LINK (nur Dateien) vs SOFT LINK (Dateien oder Verzeichnisse) vs BIND (HARD LINK für Verzeichnisse)

SEHEN SIE DIESES BILD AN, BEVOR SIE DEN POST LESEN
(Quelle: freesoftwareservers.com )

Während die Antwort von daxelrod die Frage gut erklärt, dachte ich, dass das Bild in diesem Fall einen großen Unterschied machte, besonders für Anfänger, die noch keine Inodes und komplizierten Linux-Jargon verstehen.

Denken Sie daran, wenn Sie alles von Ihrem Laufwerk "gelöscht" haben, können Sie Software ausführen, um die Daten wiederherzustellen, da die Einsen und Nullen noch vorhanden sind und Sie einfach alle festen Links gelöscht haben. Der Zweck von Recovery Software ist es, die Hard Links neu zu erstellen, um die Nullen und Einsen zu verstehen

Ich habe einen tollen "One Liner" gelesen, der alles sinnvoll machte und den ich teilen wollte!

Alle Dateien unter Linux sind "Hard Links" zu den Nullen und Einsen auf der Festplatte. Wenn Sie Daten (0 & 1) erstellen, erstellt das Betriebssystem einen Hard Link im Dateibaum, um auf diesen Punkt auf der Festplatte zu verweisen.

Erstellen Sie HARD LINK 2 und löschen Sie die Originaldatei von HARD LINK 1 :

Sie können einen weiteren festen Link erstellen und die ursprüngliche Datei löschen. Sie haben weiterhin Zugriff auf den neu erstellten festen Link.

Löschen Sie DATEI (HARD LINK 1), die SOFT LINKED ist zu:

Wenn Sie den HARD LINK 1 gelöscht haben, würde der SOFT LINK funktionieren? Nein, das Betriebssystem meldet, dass der HARD LINK 1 nicht vorhanden ist.

Löschen von SOFT LINK zu HARD LINK:

Wenn Sie umgekehrt den SOFT LINK löschen, funktioniert dann entweder HARD LINK? Ja. Solange das Betriebssystem über eine HARD LINK- Datei verfügt , wird gemeldet, dass die Füllung nicht gelöscht wurde.

- Ebenfalls einen Blick wert ist BIND, eine Möglichkeit, zwei Verzeichnisse wie das Verknüpfen zweier Verzeichnisse zu binden, die aber für das Betriebssystem transparent ist (Betriebssysteme können erkennen, wann Sie Symlink verwenden, und einige haben Regeln bezüglich des Wetters, denen sie Symlinks folgen können). Es verwendet Mount, nicht LS und kann über FSTAB konfiguriert werden.

Was ist ein BIND Mount?

FreeSoftwareServers
quelle
1
Das ist eine ziemlich ehrgeizige Anstrengung, insbesondere für einen ersten Beitrag. Leider glaube ich, dass das Hinzufügen des Materials zu "binden" (was nicht verlangt wurde) die Sache nur verwirrt; vor allem, weil Sie sich anscheinend nicht viel Mühe gegeben haben, die "Bind" -Montage zu erklären . Außerdem verstehe ich harte und weiche / symbolische Verknüpfungen sehr gut und verstehe Ihr Bild kaum. Ich wäre sehr überrascht, wenn ein Anfänger etwas daraus lernen könnte.
G-Man sagt, dass Monica
Während Sie Verzeichnisse symbolisch verknüpfen können, wird dies im Dateisystem als symbolischer Link angezeigt. Wenn Sie BINDEN, ist dies für das Betriebssystem transparent. Erscheint wie eine Akte.
FreeSoftwareServers
1
(1) Eigentlich auf zumindest einige Versionen von Linux, Sie können eine Datei montieren binden. (2) Während Bindungs-Mounts Hardlinks sehr ähnlich sind, ist die Aussage "Bind ist einfach dasselbe wie Hardlinks (außer Sie können ein Verzeichnis nicht hardlinken)" einfach falsch.
G-Man sagt, dass Monica
@ G-Man, einverstanden und entfernt, mit nur einer Notiz, in der BIND
FreeSoftwareServers
@Free tatsächlich die weiche Link auf eine Datei Namen (hard - Verbindung 1); Die Schaltpläne sollten dies deutlich machen.
JB.
0

Ein fester Link speichert eine Datei auf der Festplatte, bis alle festen Links, auch der erste (ein "Dateiname" ist technisch gesehen ein fester Link), gelöscht wurden. Ein Softlink kann so lange "hängen" bleiben, bis die Datei, auf die er zeigt (s / ed), ersetzt wird.

Ignacio Vazquez-Abrams
quelle
0

Dies ist eine sehr alte Frage, aber ich habe einen Anwendungsfall, bei dem ich harte Links verwenden muss.

Ich bin Musiker und habe daher sehr viele, sehr viele Audiodateien verschiedener Art auf mehreren Festplatten, die an meinen Mac angeschlossen sind. Terabyte wert. Ich habe sie größtenteils sehr gut mit Symlink-Verzeichnissen organisiert, damit ich sie nach Inhaltsherausgeber, Stil / Sound und anderen Kriterien finden kann, basierend auf meiner damaligen Denkweise. Leider kann ein von mir verwendetes Programm, Ableton Live, keine Aliase oder Symlinks in seinem Dateibrowser anzeigen. Die einzige Lösung, die ich gefunden habe, besteht darin, feste Verknüpfungen der Verzeichnisse zu erstellen, in die ich sie sehen möchte, und dann funktioniert alles hervorragend.

Dies ist also ein weiterer Fall, in dem Sie möglicherweise feste Links verwenden müssen, die anderen möglicherweise nicht bekannt sind.

Jonathan van Clute
quelle
Ich würde einen Fehlerbericht für Ableton Live einreichen. Vielleicht können sie das beheben.
Aventurin
Ja, es gibt bereits seit Jahren eine Menge Klagen über dieses Problem in den Foren von abletons. Sie scheinen keine Versuche zu unternehmen, es zu beheben, obwohl ich nicht herausfinden kann, warum nicht.
Jonathan van Clute