it-swarm.com.de

Was ist der Unterschied zwischen einer symbolischen und einer harten Verbindung?

Kürzlich wurde ich während eines Vorstellungsgesprächs gefragt. Ich war ehrlich und sagte, dass ich wusste, wie sich ein symbolischer Link verhält und wie er erstellt wird, verstehe jedoch nicht die Verwendung eines harten Links und wie er sich von einem symbolischen Link unterscheidet.

665
Nick Stinemates

Unter dem Dateisystem werden Dateien durch Inodes dargestellt (oder sind sich mehrere Inodes nicht sicher)

Eine Datei im Dateisystem ist im Wesentlichen eine Verknüpfung zu einem Inode.
Ein fester Link erstellt dann eine weitere Datei mit einem Link zu demselben zugrunde liegenden Inode.

Wenn Sie eine Datei löschen, wird eine Verknüpfung zum zugrunde liegenden Inode entfernt. Der Inode wird nur gelöscht (oder gelöscht/überschreibbar), wenn alle Links zum Inode gelöscht wurden.

Ein symbolischer Link ist ein Link zu einem anderen Namen im Dateisystem.

Sobald eine feste Verbindung hergestellt wurde, besteht die Verbindung zum Inode. Das Löschen des Umbenennens oder Verschiebens der Originaldatei wirkt sich nicht auf die feste Verknüpfung aus, da sie mit dem zugrunde liegenden Inode verknüpft wird. Alle Änderungen an den Daten im Inode spiegeln sich in allen Dateien wider, die auf diesen Inode verweisen.

Hinweis: Hardlinks sind nur innerhalb desselben Dateisystems gültig. Symbolische Links können Dateisysteme umfassen, da sie einfach der Name einer anderen Datei sind.

695
Martin York

Einige nette Intuitionen, die helfen könnten, wenn Sie eine beliebige Linux (ish) Konsole verwenden.

Erstellen Sie zwei Dateien:

$ touch blah1; touch blah2

Geben Sie einige Daten ein:

$ echo "Cat" > blah1
$ echo "Dog" > blah2

(Eigentlich hätte ich eigentlich Echo verwenden können, da es die Dateien erstellt, wenn sie nicht existieren ... aber das macht nichts.)

Und wie erwartet:

$cat blah1; cat blah2
Cat
Dog

Lassen Sie uns Hard- und Softlinks erstellen:

$ ln blah1 blah1-hard
$ ln -s blah2 blah2-soft

Mal sehen, was gerade passiert ist:

$ ls -l

blah1
blah1-hard
blah2
blah2-soft -> blah2

Das Ändern des Namens von blah1 spielt keine Rolle:

$ mv blah1 blah1-new
$ cat blah1-hard
Cat

blah1-hard verweist auf den Inode, den Inhalt der Datei - das wurde nicht geändert.

$ mv blah2 blah2-new
$ ls blah2-soft
blah2-soft
$ cat blah2-soft  
cat: blah2-soft: No such file or directory

Der Inhalt der Datei konnte nicht gefunden werden, da der Softlink auf den geänderten Namen verweist und nicht auf den Inhalt. Wenn blah1 gelöscht wird, enthält blah1-hard den Inhalt ebenfalls. Wenn blah2 gelöscht wird, ist blah2-soft nur ein Link zu einer nicht vorhandenen Datei.

395
Adam Matan

Ein Bild sagt mehr als tausend Worte. So visualisiere ich es:

enter image description here

So kommen wir zu diesem Bild:

  1. Erstellen Sie im Dateisystem einen Namen myfile.txt, der auf einen neuen Inode verweist (der die Metadaten für die Datei enthält und auf die Datenblöcke zeigt, die den Inhalt enthalten, d. H. Den Text "Hello, World!"):

    $ echo 'Hello, World!' > myfile.txt
    
  2. Erstellen Sie einen festen Link my-hard-link zur Datei myfile.txt. Dies bedeutet "Erstellen Sie eine Datei, die auf den gleichen Inode verweist, auf den myfile.txt zeigt":

    $ ln myfile.txt my-hard-link
    
  3. Erstellen Sie einen Softlink my-soft-link zur Datei myfile.txt. Dies bedeutet "Erstellen Sie eine Datei, die auf die Datei myfile.txt zeigen soll":

    $ ln -s myfile.txt my-soft-link
    

Schauen Sie, was jetzt passiert, wenn myfile.txt gelöscht (oder verschoben) wird: my-hard-link zeigt immer noch auf den gleichen Inhalt und ist daher nicht betroffen, wohingegen my-soft-link jetzt auf nichts zeigt. In anderen Antworten werden die Vor- und Nachteile der einzelnen Themen diskutiert.

371
akivajgordon

Hardlinks sind nützlich, wenn die Originaldatei verschoben wird. Beispielsweise verschieben Sie eine Datei von/bin nach/usr/bin oder nach/usr/local/bin. Jeder Symlink zu der Datei in/bin würde dadurch unterbrochen, aber ein Hardlink, der ein Link direkt zum Inode der Datei ist, würde dies nicht interessieren.

Feste Links benötigen möglicherweise weniger Speicherplatz, da sie nur einen Verzeichniseintrag beanspruchen, während ein Symlink einen eigenen Inode benötigt, um den Namen zu speichern, auf den er verweist.

Harte Links benötigen auch weniger Zeit zum Auflösen - Symlinks können auf andere Symlinks verweisen, die sich in symbolverknüpften Verzeichnissen befinden. Einige davon könnten sich auf NFS oder anderen Dateisystemen mit hoher Latenzzeit befinden und könnten dazu führen, dass Netzwerkverkehr aufgelöst wird. Feste Verknüpfungen, die sich immer im selben Dateisystem befinden, werden immer in einer einzigen Suche aufgelöst und beinhalten keine Netzwerklatenz (wenn es sich um einen Hardlink in einem NFS-Dateisystem handelt, führt der NFS-Server die Auflösung aus und ist für diese nicht sichtbar das Client-System). Manchmal ist das wichtig. Nicht für mich, aber ich kann mir leistungsfähige Systeme vorstellen, bei denen dies wichtig sein könnte.

Ich denke auch, dass Dinge wie mmap (2) und sogar open (2) die gleiche Funktionalität wie Hardlinks verwenden, um den Inode einer Datei aktiv zu halten, so dass der Inode auch dann verbleibt, wenn die Datei unlink (2) ed wird. Erst wenn der Prozess geschlossen ist, wird die Datei wirklich entfernt. Dies ermöglicht wesentlich sicherere temporäre Dateien (wenn Sie das Öffnen und Aufheben der Verknüpfung atomar bewirken können, wobei es möglicherweise eine POSIX-API gibt, für die ich mich nicht erinnere, dann haben Sie wirklich eine sichere temporäre Datei), in der Sie lesen/schreiben können Ihre Daten, ohne dass jemand darauf zugreifen kann. Das war richtig, bevor/proc jedem die Möglichkeit gab, Ihre Dateideskriptoren einzusehen, aber das ist eine andere Geschichte.

Apropos: Das Wiederherstellen einer Datei, die im Prozess A geöffnet ist, die aber im Dateisystem nicht verknüpft ist, dreht sich um Hardlinks, um die Inode-Links wiederherzustellen, sodass die Datei nicht verschwindet, wenn der Prozess, der sie geöffnet hat, sie schließt oder verschwindet.

65
Tanktalus

Ein einfacher Weg, um den Unterschied zwischen einem harten Link und einem symbolischen Link zu erkennen, ist ein einfaches Beispiel. Eine feste Verknüpfung zu einer Datei zeigt auf den Ort, an dem die Datei gespeichert ist, oder auf den Inode dieser Datei. Ein symbolischer Link verweist auf die eigentliche Datei.

Wenn wir also eine Datei namens "a" haben und eine feste Verknüpfung "b" und eine symbolische Verknüpfung "c" erstellen, die sich alle auf die Datei "a" beziehen,

echo "111" > a
ln a b
ln -s a c

Die Ausgabe von "a", "b" und "c" lautet:

cat a --> 111
cat b --> 111
cat c --> 111

Nun entfernen wir die Datei "a" und sehen, was mit der Ausgabe von "a", "b" und "c" geschieht:

rm a
cat a --> No such file or directory
cat b --> 111
cat c --> No such file or directory

Also was ist passiert? 

Da die Datei "c" auf die Datei "a" selbst verweist, hat die Datei "c" nichts zu zeigen, wenn die Datei "a" gelöscht wird. Sie wird auch gelöscht. 

Die Datei "b" zeigt jedoch auf den Speicherort oder den Inode der Datei "a". Wenn also die Datei "a" gelöscht wird, zeigt sie nicht mehr auf den Inode. Da die Datei "b" dies tut, speichert der Inode weiterhin alle Inhalte, die zu "a" gehören, bis keine harten Links mehr darauf zeigen.

32
Bolboa

Soft Link:

soft oder symbolisch ist eher eine Abkürzung für die Originaldatei. Wenn Sie das Original löschen, schlägt die Verknüpfung fehl und wenn Sie nur die Verknüpfung löschen, passiert nichts mit dem Original.

Softlink-Syntax : ln -s Pathof_Target_file link

Ausgabe: link -> ./Target_file

Beweis: readlink link Auch in der ls -l link-Ausgabe wird der erste Buchstabe in lrwxrwxrwx als l angezeigt, was darauf hinweist, dass es sich bei der Datei um einen Softlink handelt.

Link löschen: unlink link 

Hinweis: Wenn Sie möchten, kann Ihr Softlink auch funktionieren, nachdem Sie ihn aus dem aktuellen Verzeichnis an einen anderen Ort verschoben haben. Stellen Sie sicher, dass Sie beim Erstellen eines Softlinks den absoluten Pfad und nicht den relativen Pfad angeben. (beginnend mit/root/user/Target_file und nicht ./Target_file)

Hard Link:

Hard Link ist eher eine Spiegelkopie oder mehrere Pfade zu derselben Datei. Tun Sie etwas zu file1 und es erscheint in Datei 2 . Beim Löschen einer Datei bleibt die andere immer in Ordnung.

Der Inode (oder die Datei) wird nur gelöscht, wenn alle (harten) Links oder alle Pfade zu dem Inode (derselben Datei) gelöscht wurden.

Nachdem ein Hardlink erstellt wurde, hat der Link den Inode der Originaldatei. Das Löschen des Umbenennens oder Verschiebens der Originaldatei hat keine Auswirkungen auf die feste Verknüpfung, da sie mit dem zugrunde liegenden Inode verknüpft wird. Alle Änderungen an den Daten im Inode spiegeln sich in allen Dateien wider, die auf diesen Inode verweisen.

Hard Link-Syntax : ln Target_file link

Ausgabe: Eine Datei mit Namenslink wird mit der gleichen Inode-Nummer wie in Targetfile erstellt.

Proof: ls -i link Target_file (überprüfen Sie ihre Inodes)

Löschen des Links: rm -f link (Löschen Sie den Link genauso wie eine normale Datei) 

Hinweis : Symbolische Links können Dateisysteme umfassen, da sie einfach der Name einer anderen Datei sind. Hard-Links sind nur innerhalb desselben Dateisystems gültig.

Symbolische Links haben einige Funktionen, die nicht vorhanden sind:

  • Hardlink verweist auf den Dateiinhalt. Der Softlink verweist auf den Dateinamen
  • die Größe des Hardlinks ist die Größe des Inhalts, während der Softlink .__ die Dateinamengröße hat.
  • Hardlinks haben den gleichen Inode. Softlinks nicht.
  • Hardlinks können Dateisysteme nicht kreuzen. Softlinks tun.
  • wenn Sie wissen, wohin ein symbolischer Link verweist, während Sie mit harten -Links arbeiten, müssen Sie das gesamte Dateisystem durchsuchen, um Dateien zu finden , die denselben Inode verwenden.

    # find / -inum 517333

    /home/bobbin/sync.sh
    /root/synchro
    
  • hardlinks können nicht auf Verzeichnisse verweisen.

Die Hardlinks haben zwei Einschränkungen:

  • Die Verzeichnisse können nicht fest verbunden werden. Linux erlaubt dies nicht, um die azyklische Baumstruktur von Verzeichnissen zu erhalten.
  • Eine harte Verbindung kann nicht über Dateisysteme hinweg erstellt werden. Beide Dateien müssen sich in denselben Dateisystemen befinden, da unterschiedliche Dateisysteme unterschiedliche unabhängige Inode-Tabellen haben (zwei Dateien in unterschiedlichen Dateisystemen, jedoch mit gleicher Inode-Nummer).
30

Symbolische Links sind mit einem Pfadnamen verknüpft. Dies kann sich an einer beliebigen Stelle in der Dateistruktur eines Systems befinden und muss nicht einmal existieren, wenn die Verknüpfung erstellt wird. Der Zielpfad kann relativ oder absolut sein.

Hardlinks sind zusätzliche Zeiger auf einen Inode, dh sie können nur auf demselben Volume wie das Ziel vorhanden sein. Weitere Hardlinks zu einer Datei sind nicht vom "ursprünglichen" Namen zu unterscheiden, der zum Referenzieren einer Datei verwendet wird.

29
Andrew Medico

Ich würde Sie auf Wikipedia verweisen:

Ein paar Punkte:

  • Im Gegensatz zu harten Links können Symlinks (meistens) Dateisysteme überqueren.
  • Symlinks können auf Verzeichnisse verweisen.
  • Hardlinks zeigen auf eine Datei und ermöglichen es Ihnen, auf dieselbe Datei mit mehreren Namen zu verweisen.
  • Solange mindestens eine Verbindung besteht, sind die Daten noch verfügbar.
19
Jauder Ho

Hardlinks sind sehr nützlich, wenn Sie inkrementelle Sicherungen durchführen. Siehe zum Beispiel rsnapshot . Die Idee ist, mit harten Links zu kopieren:

  • sicherungsnummer n nach n + 1 kopieren
  • sicherungskopie n - 1 nach n kopieren
  • ...
  • kopiere backup 0 zu backup 1
  • aktualisieren Sie Backup 0 mit allen geänderten Dateien.

Die neue Sicherung nimmt außer den von Ihnen vorgenommenen Änderungen keinen zusätzlichen Speicherplatz in Anspruch, da alle inkrementellen Sicherungen auf die gleichen Inodes für Dateien verweisen, die sich nicht geändert haben.

8
JesperE

Ich füge Nicks Frage hinzu: Wann sind Hardlinks nützlich oder notwendig? Die einzige Anwendung, die mir in den Sinn kommt, bei der symbolische Links die Aufgabe nicht erfüllen würden, ist die Bereitstellung einer Kopie einer Systemdatei in einer Chroot-Umgebung.

5

Ebenfalls:

  1. Leseleistung von Hardlinks ist besser als symbolische Links (Micro-Performance)
  2. Symbolische Links können kopiert werden, versionsgesteuert, .. etc. Mit anderen Worten, sie sind eine tatsächliche Datei. Auf der anderen Seite ist ein Hardlink etwas auf einer etwas niedrigeren Ebene, und Sie werden feststellen, dass es im Vergleich zu symbolischen Links weniger Tools gibt, mit denen Hardlinks als Hardlinks und nicht als normale Dateien verwendet werden können
3
Amr Mostafa

Was Sie als gewöhnliche "Datei" bezeichnen, besteht eigentlich aus zwei verschiedenen Dingen: den Daten einer Datei und einem Verzeichniseintrag. Wenn Sie eine feste Verknüpfung für eine Datei erstellen, erstellen Sie tatsächlich einen zweiten Verzeichniseintrag, der sich auf dieselben Daten bezieht. Beide Verzeichniseinträge haben genau dieselbe Funktionalität. Jeder kann zum Öffnen der Datei zum Lesen verwendet werden. Sie haben also nicht wirklich "eine Datei plus einen harten Link", sondern "Dateidaten mit zwei Verzeichniseinträgen". Was Sie als Löschen einer Datei bezeichnen, löscht tatsächlich einen Verzeichniseintrag. Wenn der letzte Verzeichniseintrag für die Daten gelöscht wird, werden auch die Daten selbst gelöscht. Bei gewöhnlichen Dateien, die nur einen Verzeichniseintrag haben, werden beim Löschen des Verzeichniseintrags die Daten wie immer gelöscht. (Während eine Datei geöffnet ist, erstellt das Betriebssystem eine temporäre Verknüpfung zu der Datei. Wenn Sie alle Verzeichniseinträge löschen, bleiben die Daten jedoch erhalten, sobald Sie die Datei schließen.) 

Erstellen Sie beispielsweise eine Datei A.txt, eine feste Verknüpfung B.txt und löschen Sie A.txt. Beim Erstellen von A.txt wurden einige Daten erstellt und ein Verzeichniseintrag "A.txt". Beim Erstellen der festen Verknüpfung wurde ein weiterer Verzeichniseintrag B.txt erstellt, der auf dieselben Daten verweist. Wenn Sie A.txt löschen, haben Sie noch alle Daten und einen einzigen Verzeichniseintrag B.txt, genau so, als hätten Sie anfangs eine Datei B.txt erstellt. 

Ein Softlink ist nur eine (fast) gewöhnliche Datei, enthält jedoch keine Daten, sondern den Pfad eines anderen Verzeichniseintrags. Wenn Sie die Datei löschen, auf die sich der Softlink bezieht, enthält der Softlink einen Pfad, der nicht mehr auf einen Verzeichniseintrag verweist. Es ist kaputt. Wenn Sie den Softlink löschen, ist dies wie das Löschen einer anderen Datei. Die Datei, auf die er verweist, ist davon nicht betroffen. 

3
gnasher729

 Hard link vs Soft link

Hardlink Vs Softlink kann durch dieses Bild leicht erklärt werden.

3
PGOEL

Von MSDN ,

Symbolischer Link

Ein symbolischer Link ist ein Dateisystemobjekt, das auf ein anderes Dateisystemobjekt verweist. Das Objekt, auf das gezeigt wird, wird als Ziel bezeichnet.

Symbolische Links sind für Benutzer transparent. Die Links erscheinen als normal Dateien oder Verzeichnisse und kann vom Benutzer oder der Anwendung bearbeitet werden auf genau dieselbe Weise.

Symbolische Links dienen zur Unterstützung bei Migration und Anwendung Kompatibilität mit UNIX-Betriebssystemen. Microsoft hat .__ implementiert. Seine symbolischen Links funktionieren genauso wie UNIX-Links.

Symbolische Links können entweder absolute oder relative Links sein. Absolut Links sind Links, die jeden Teil des Pfadnamens angeben. relativ Verknüpfungen werden relativ zu der Position bestimmt, in der sich die relativen Verknüpfungsbezeichner in .__ befinden. einen angegebenen Pfad

Ein Beispiel für einen absoluten symbolischen Link

X: "C:\alpha\beta\absLink\gamma\file"
Link: "absLink" maps to "\\machineB\share"
Modified Path: "\\machineB\share\gamma\file"

Ein Beispiel relativer symbolischer Links

X: C:\alpha\beta\link\gamma\file
Link: "link" maps to "..\..\theta"
Modified Path: "C:\alpha\beta\..\..\theta\gamma\file"
Final Path: "C:\theta\gamma\file"

Hard link

Ein fester Link ist die Dateisystemdarstellung einer Datei, durch die mehr als ein Pfad verweist auf eine einzelne Datei im selben Volume.

Um eine feste Verknüpfung in Windows zu erstellen, navigieren Sie zu der Stelle, an der die Verknüpfung erstellt werden soll, und geben Sie den folgenden Befehl ein:

mklink /H Link_name target_path

Beachten Sie, dass Sie feste Links in beliebiger Reihenfolge löschen können, unabhängig von der Reihenfolge, in der sie erstellt wurden. Hardlinks können auch nicht erstellt werden, wenn

  • referenzen befinden sich in verschiedenen lokalen Laufwerken
  • referenzen enthalten Netzlaufwerk. Mit anderen Worten, eine der Referenzen ist ein Netzlaufwerk
  • der zu erstellende Hardlink befindet sich im selben Pfad wie das Ziel

Kreuzung

NTFS unterstützt einen anderen Verbindungstyp namens Junction. MSDN definiert es wie folgt:

Eine Junction (auch Softlink genannt) unterscheidet sich von einer Hardlink-Verknüpfung dadurch, dass es sich bei den von ihr referenzierten Speicherobjekten um separate Verzeichnisse handelt und eine Junction kann Verzeichnisse verbinden, die sich auf verschiedenen lokalen Volumes auf demselben Computer befinden. Ansonsten funktionieren Junctions identisch zu harten Links. 

Die fettgedruckten Teile im Hardlink-Abschnitt und im Junction-Abschnitt zeigen den grundlegenden Unterschied zwischen den beiden.

Befehl zum Erstellen einer Kreuzung in Fenstern. Navigieren Sie zu der Stelle, an der die Verknüpfung erstellt werden soll, und geben Sie Folgendes ein:

mklink /J link_name target_path
2

Ein Verzeichniseintrag ist link a structrue:

struct dentry{
    ino_t ino;
    char  name[256];
}

das Ino ist die Nummer des Inodes, der Name ist der Dateiname, die Inode-Struktur mag :

struct inode{
      link_t nlink; 
      ...
}

zum Beispiel erstellen Sie eine Datei/1, der Verzeichniseintrag könnte etwa wie folgt aussehen:

struct dentry{
     ino_t ino; /* such as 15 */
     char  name[256]; /* "1" */
} 

die Inode-Struktur mag vielleicht:

   struct inode{ /* inode number 15 */
         link_t nlink; /* nlink = 1 */
         ...
    }

dann erstellen Sie einen Hardlink (möglicherweise/100), der Verzeichniseintrag könnte etwa wie folgt aussehen:

  struct dentry{
     ino_t ino; /* 15 */
     char  name[256]; /* 100 */
  }

die Inode-Struktur mag vielleicht:

   struct inode{ /* inode numebr 15 */
         link_t nlink; /* nlink = 2 */
         ...
    }

dann erstellen Sie einen symbolischen Link (möglicherweise/200) zu Datei 1, der Verzeichniseintrag könnte folgendermaßen aussehen:

  struct dentry{
        ino_t ino; /* such as 16 */
        char  name[256]; /* "200" */
  }

die Inode-Struktur mag vielleicht:

   struct inode{ /* inode number 15 */ 
         link_t nlink; /* nlink = 2 */
         ...
    }

   struct inode{ /* inode number 16 */
         link_t nlink; /* nlink = 1 */
         ...
    } /* the data of inode 16 maybe /1 or 1 */
2
mc.robin

Einfach Hard Link: Fügt einer Datei einfach einen neuen Namen hinzu, das heißt, eine Datei kann mehrere Namen gleichzeitig haben, alle Namen sind gleich, keiner wird bevorzugt. Hard Link ist nicht dazu gedacht, den gesamten Inhalt zu kopieren von datei und neue datei erstellen ist nicht das, es wird einfach ein alternativer name erstellt, der bekannt sein soll .. 

Symbolischer Link (symbolischer Link): ist ein Dateizeiger auf eine andere Datei. Wenn der symbolische Link auf eine vorhandene Datei verweist, die später gelöscht wird, zeigt der symbolische Link weiterhin auf denselben Dateinamen, auch wenn der Name keine Datei mehr benennt.

Zusätzlich zu den obigen Antworten kann der Unterschied beim Finden der Hardlink- und Softlink-Datei wie folgt verstanden werden:

Ich habe eine Datei f6 in meinem aktuellen Verzeichnis sowie ein Verzeichnis namens t2.

Die Datei f1 und ./t2/f2 sind symbolische Links zu f6.

Die Datei f7 und ./t2/f8 sind feste Links von f6.

Um sowohl einen weichen als auch einen harten Link zu finden, können wir verwenden:

$ find -L . -samefile f6 

> ./f1
> ./f6
> ./f7
> ./t2/f2
> ./t2/f8

Um nur Hardlinks zu finden, können wir verwenden:

$ find . -xdev -samefile f6

> ./f6
> ./f7
> ./t2/f8

Da Hardlinks auf demselben Dateisystem erstellt werden können, können wir alle Hardlinks ohne -L-Option (mit -xdev-Option) im selben Dateisystem/Mount-Punkt durchsuchen. Es speichert die unnötige Suche in verschiedenen Mount-Punkten. 

Das Suchen des Hardlinks ist also etwas schneller als das Suchen der Softlinks (Bitte korrigieren, wenn ich falsch oder nicht klar bin).

2
ChandanK

Symbolische Links geben einer Datei einen anderen Namen, ähnlich wie bei harten Links. Eine Datei kann jedoch auch gelöscht werden, wenn noch symbolische Links vorhanden sind.

1
lmmorris1

Meine zwei Cent beim Gebrauch:

Soft Links können verwendet werden, um lange Pfadnamen zu verkürzen, d. H .:

ln -s /long/folder/name/on/long/path/file.txt /short/file.txt

Änderungen, die an /short/file.txt vorgenommen wurden, werden auf die Originaldatei angewendet.

Hard Links können verwendet werden, um große Dateien zu verschieben:

$ ls -lh /myapp/dev/
total 10G
-rw-r--r-- 2 root root 10G May 22 12:09 application.bin

ln /myapp/dev/application.bin /myapp/prd/application.bin

Sofortige Kopie in einen anderen Ordner und Originaldatei (auf /myapp/dev) kann verschoben oder gelöscht werden, ohne die Datei in /myapp/prd zu berühren.

0
Matheus Santoro

In dieser Antwort meine ich, wenn ich eine Datei sage, die Position im Speicher

Alle Daten, die gespeichert werden, werden in einer Datenstruktur mit dem Namen inodes gespeichert. Jeder Inode hat eine Inodenummer. Die Inode-Nummer wird für den Zugriff auf den Inode verwendet. Da alle Hardlinks die gleiche Inodenummer haben (wodurch auf denselben Inode zugegriffen wird), verweisen alle auf denselben physischen Speicher.

Ein symbolischer Link ist eine spezielle Art von Datei. Da es sich auch um eine Datei handelt, wird sie einen Dateinamen und eine Inode-Nummer haben. Wie oben erwähnt, gelangt man zu einer Inode, die auf Daten verweist Die Inodenummern in symbolischen Links greifen auf diejenigen Inodes zu, die auf "einen Pfad" zu einer anderen Datei verweisen. Genauer gesagt, die Inodenummer in symbolischen Links greift auf diejenigen Inodes zu, die auf einen anderen Hardlink zeigen.

wenn wir eine Datei in der GUI verschieben, kopieren oder löschen, spielen wir mit den Hardlinks der Datei, nicht mit dem physischen Speicher. Wenn wir eine Datei löschen, löschen wir den Hardlink der Datei. Wir löschen den physischen Speicher nicht aus. Wenn alle zu verknüpfenden Hardlinks gelöscht werden, kann auf die gespeicherten Daten nicht zugegriffen werden, obwohl sie möglicherweise noch im Speicher vorhanden sind

0
s. srinath

Ich habe gerade einen einfachen Weg gefunden, harte Links in einem üblichen Szenario, der Software-Installation, zu verstehen.

Eines Tages habe ich eine Software zur Installation in den Ordner Downloads heruntergeladen. Nachdem ich Sudo make install ausgeführt hatte, wurden einige ausführbare Dateien in den lokalen Ordner "cped" gesetzt. Hier erstellt cphard link. Ich war mit der Software zufrieden, stellte jedoch schnell fest, dass Downloads auf lange Sicht kein guter Ort ist. Also mved ich den Softwareordner in das source Verzeichnis. Nun, ich kann die Software weiterhin wie zuvor ausführen, ohne sich um etwaige Zielverknüpfungen wie in Windows zu kümmern. Dies bedeutet, dass hard link Inode direkt und andere Dateien findet.

0
themefield