GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie harte und weiche (symlink) Links auf Linux-Systemen

Oft ist es bei Linux/Unix-basierten Betriebssystemen ratsam, die zugrunde liegenden Konzepte zu verstehen, dann kann nur einer die Schönheit von Befehlen und deren Implementierung schätzen.

Einige kleine Details werden uns beim Debuggen und Beheben vieler herausfordernder Situationen sehr helfen, wenn wir diese Befehle und verwandte Konzepte rechtzeitig kennen.

In diesem Thema werde ich behandeln, was Links sind, welche Typen es gibt, welche Zeichen sie unterscheiden und wie sie besser verwendet werden können, zusammen mit den erforderlichen Konzepten.

Wenn Sie den Befehl „man ln“ ausführen, können Sie sehen, dass hier „Link zwischen Dateien erstellen“ steht und nicht über Soft- oder Hardlinks.

[email protected] ~}$ man ln

Ähnlich wird der Befehl „man link“ als „Link-Funktion aufrufen, um eine Datei zu erstellen“ beschrieben.

Softlink :

Softlink ist, wie der Name schon sagt, nur ein neuer Link, der zu der neuen Datei erstellt wird. In diesem Fall zeigt die Inode-Nummer der neuen Datei auf die alte Datei.

Fester Link:

In diesem Fall zeigen die alte und die neue Datei beide auf dieselbe Inode-Nummer.

Symbolischer Link :

In einigen Unix/Linux-Varianten werden symbolische und weiche Links gleich behandelt. Der eigentliche Unterschied besteht jedoch darin, dass sowohl die Inode-Nummern der neuen als auch der alten Datei auf eine neue Inode-Nummer zeigen. Dies hängt vollständig von der Implementierung ab.

Anmerkung 1 :- In vielen Fällen werden symbolische und Softlink-Terminologien synonym verwendet. Aber man muss sich bewusst sein, wann man was verwendet.

Verwendung des „ln“-Befehls zum Erstellen von Hardlinks und Softlinks

Hardlink erstellen

1) Der Befehl „man ln“ liefert die folgende Ausgabe.

[email protected] ~}$ man ln
ln  - make links between files

2) Wenn der Befehl „ln“ ohne Argumente übergeben wird, wird der Fehler „Dateioperand fehlt“ ausgegeben.

[email protected] ~}$ln
ln: missing file operand
Try 'ln --help' for more information.

3) Erstellen der festen Verknüpfung zwischen zwei Dateien. Überprüfen Sie zuerst, ob vorhandene Dateien vorhanden sind, oder erstellen Sie die Datei / Dateien neu und verknüpfen Sie sie dann. Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung,

[email protected] ~}$ ls -la
total 24
drwx------  4 root root 4096 Feb  6 15:23 .
drwxr-xr-x 23 root root 4096 Jan 25 16:39 ..
-rw-r--r--  1 root root 3122 Jan 25 16:41 .bashrc
drwx------  2 root root 4096 Feb  6 15:23 .cache
-rw-r--r--  1 root root    0 Jan 25 16:41 .hushlogin
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwxr-xr-x  2 root root 4096 Jan 25 16:41 .ssh

i) Erstellen Sie die Datei mit dem „Touch“-Befehl

[email protected] ~}$ touch 123.txt
[email protected] ~}$ ls -l
total 0
-rw-r--r-- 1 root root 0 Feb  6 15:51 123.txt

ii) Geben Sie den Inhalt mit dem „cat“-Befehl in die Datei ein und drücken Sie „Strg+C“, um zu speichern und zu beenden.

[email protected] ~}$ cat > 123.txt
Welcome to this World!
^C

iii) Erstellen Sie den Hardlink zwischen den Dateien „123.txt“ und „321.txt“. In diesem Fall existierte bereits die „123.txt“ mit dem Inhalt „Welcome to this World“.

[email protected] ~}$ ln 123.txt 321.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt

iv) Überprüfen Sie die Inode(Indexknoten)-Nummern der Dateien. Für beide Dateien ist die Inode-Nummer gleich und lautet 794583. Überprüfen Sie auch den Inhalt der neuen Datei „321.txt“, die auch mit „123.txt“ identisch ist.

[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
$ cat 321.txt
Welcome to this World!

Anmerkung 2 :- Die Inode-Nummer ist eine eindeutige Indexnummer, die für jede Datei generiert wird, die in Linux/Unix-Betriebssystemen erstellt wird. Diese Inode-Nummern werden in Verzeichnis-/Dateiattributen im /proc-Verzeichnis gespeichert. Aber im Falle von Links werden diese Inode-Nummern b/w mit den Dateien geteilt und nur der Pfad wird in der Dateitabelle aktualisiert.

v) Erstellen Sie eine weitere Datei mit dem Namen „456.txt“ und verknüpfen Sie diese mit dem ln-Befehl mit „321.txt“. Jetzt haben alle drei Dateien die gleichen Inode-Nummern. Der Inhalt von „456.txt“ ist derselbe wie der der Originaldatei.

[email protected] ~}$  ls -li
total 12
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt
$ cat 456.txt
Welcome to this World!
[email protected] ~}$   ls -l
total 12
-rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt

vi) Wenn die Quelldatei oder eine dieser Dateien entfernt wird, hat dies keine Auswirkungen auf andere Dateien. Die Quelldatei kann mit dem Befehl „rm“ entfernt werden. Der Inhalt anderer Dateien hat ebenfalls keine Auswirkung.

[email protected] ~}$ rm 123.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ cat 456.txt
Welcome to this World!

vii) Die Erstellung fester Links über Verzeichnisse hinweg ist nicht zulässig.

[email protected] ~}$ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ mkdir abc
[email protected] ~}$ ln abc def
ln: abc: hard link not allowed for directory

viii) Jegliche Änderungen am Inhalt einer Datei wirken sich auf den Inhalt der anderen Datei aus und ändern ihn entsprechend. Im Folgenden werden die Schritte erklärt,

[email protected] ~}$ vi 321.txt
Welcome to this World!
You are welcomed to this new world
:wq
[email protected] ~}$ ls -l
total 12
-rw-r--r-- 2 root root   59 Feb  6 16:24 321.txt
-rw-r--r-- 2 root root   59 Feb  6 16:24 456.txt
drwxr-xr-x 2 root root 4096 Feb  6 16:18 abc
[email protected] ~}$ cat 456.txt
Welcome to this World!
You are welcomed to this new world

Softlink erstellen:

1)  Erstellen Sie die Datei „src.txt“ mit dem „touch“-Befehl und geben Sie den Inhalt als „Hello World“ mit dem cat-Befehl ein und drücken Sie dann „ctrl+c“, um zu speichern und zu beenden.

[email protected] ~}$ touch src.txt
[email protected] ~}$ cat > src.txt
Hello World
^C
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

2) Erstellen Sie die Zieldatei als „dst.txt“ und erstellen Sie mit den Befehlszeilenoptionen „ln -s“ den symbolischen Link (auch als Softlink bezeichnet). Überprüfen Sie den Inhalt der „dst.txt“-Datei und es wird derselbe Inhalt wie in „src.txt“ angezeigt.

[email protected] ~}$ ln -s src.txt dst.txt
[email protected] ~}$  ls -l
total 4
lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt
[email protected] ~}$  cat dst.txt
Hello World

3) Bei symbolischen Links unterscheiden sich die Inode-Nummern von Quelldatei und Zieldatei. Außerdem erscheint in den Berechtigungen der Buchstabe „l“, der anzeigt, dass es sich um Links handelt. „dst.txt–>src.txt“ wird der neue Link sein, der jetzt eingerichtet wird.

[email protected] ~}$  ls -li
total 4
794584 lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

4) Symbolische Erstellung für Verzeichnisse ist erlaubt. Dies wird unten in den Schritten erklärt

[email protected] ~}$ mkdir abc
[email protected] ~}$ ln -s abc def
$ ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

5) Inode-Nummer für alle Dateien/Verzeichnisse (Quelle und Ziel sind unterschiedlich)

[email protected] ~}$  ls -li
total 8
794585 drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
794586 lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
794584 lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

6) Symbolische Links können für Verzeichnisse erstellt werden, wie zuvor erläutert. Sobald diese Verzeichnisse mit symbolischem Link erstellt wurden, können innerhalb dieser Verzeichnisse Dateien erstellt werden. Dadurch wird es interessanter zu wissen, wie sich das jetzt verhält. Wenn die Dateien im Quellverzeichnis erstellt werden, spiegelt sich dies auch im Zielverzeichnis wider. Die folgenden Schritte erklären dies deutlich.

[email protected] ~}$ $ cd abc
[email protected] ~}$  touch 123.txt
[email protected] ~}$  vi 123.txt
Hello
:wq!
[email protected] ~}$  touch 456.txt
[email protected] ~}$  cd ..
[email protected] ~}$  ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:36 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt
[email protected] ~}$ cd def
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 6 Feb  6 16:37 123.txt
-rw-r--r-- 1 root root 0 Feb  6 16:36 456.txt
[email protected] ~}$ cat 123.txt
Hello

Anmerkung 3 :- Wir können beliebig viele verschachtelte Links haben. Aber der Nutzer/Administrator, der diese symbolischen Links erstellt, sollte sich der Tatsache bewusst sein, dass dies zu Verwirrung führen wird. Manchmal können sie vergessen werden und zu unerwünschten Ergebnissen führen. Sie müssen also vorsichtig sein.

Anmerkung 4 :-  Es gibt einige Möglichkeiten für „symbolische“ oder „weiche“ Links, die auf einen nicht existierenden Link verweisen. Dies wird als „Dangling Link“ bezeichnet. Dies wird ins Nirgendwo zeigen.

Anmerkung 5 :- Es gibt Systemaufrufe, die in Linux/Unix verwendet werden, um symbolische ODER-Hardlinks auf Programmierebene zu erstellen (unter Verwendung von C/C++-Programmen auf Systemebene). Dies sind 1) Symlink 2) Symlinkat.

Diese sollten nicht mit den oben beschriebenen Befehlszeilendienstprogrammen verwechselt werden.

Entfernen von Softlinks/symbolischen Links

Weiche oder symbolische Links werden mit den Befehlen „rm“ und unlink entfernt.

Syntax:

# rm

# Verknüpfung von

aufheben

Entfernen von Softlink-Verzeichnissen

Syntax:

# rm

# Verknüpfung von

aufheben

Schlussfolgerungen:

Das Erstellen von Links, ob hart oder weich, ist für Administratoren und Entwickler sehr hilfreich. Das obige Referenzmaterial wird Ihnen dabei helfen, zu verstehen, welche Art von Link wir erstellen und wie er hilfreich ist. Auch dieser Artikel hilft beim Verständnis der Unterschiede und Verwendung von Links.


Linux
  1. So machen Sie Dateien und Verzeichnisse unlöschbar, sogar von Root in Linux

  2. So erstellen Sie harte und symbolische Links in Linux

  3. Was sind Softlinks und Hardlinks im Linux-Dateisystem?

  4. So erstellen und mounten Sie Dateisysteme in Linux

  5. Unterschied zwischen Softlinks und Hardlinks in Linux

Erläuterung von Soft Link und Hard Link in Linux anhand von Beispielen

So verknüpfen Sie eine Datei unter Linux per Symlink

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

Was sind symbolische Links in Linux? Wie erstellt man symbolische Links?

Der ln-Befehl unter Linux:Soft- und Hardlinks erstellen

Hardlinks und Softlinks in Linux:Alles, was Sie wissen müssen