Wenn Sie Dateien im Detail auflisten, sehen Sie viele Informationen. Betrachten wir ein früheres Beispiel von Inode-Informationen aus dem Befehl ls -li:
pete@icebox:~$ ls -li
140 drwxr-xr-x 2 pete pete 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 pete pete 6 Jan 20 20:01 Documents
Wir sind zuvor über das dritte Feld in dieser Ausgabe hinweggegangen. Dieses Feld ist die Link-Anzahl.
Die Link-Anzahl in Linux
Die Link-Anzahl in Linux ist die Gesamtzahl der Hardlinks, die eine Datei besitzt. Um zu verstehen, was das bedeutet, müssen wir zuerst besprechen, was Links sind. In Linux gibt es zwei Arten von Links: symbolische Links (Symlinks) und Hardlinks.
Symlinks verstehen
Im Windows-Betriebssystem gibt es Verknüpfungen (Shortcuts), die im Wesentlichen Aliase sind, die auf andere Dateien zeigen. In Linux ist das Äquivalent ein symbolischer Link, auch bekannt als Softlink oder Symlink. Ein Symlink ist ein spezieller Dateityp, der über seinen Namen auf eine andere Datei oder ein anderes Verzeichnis zeigt.
Sehen wir uns das in der Praxis an. Wir erstellen einige Dateien und dann einen Symlink.
pete@icebox:~/Desktop$ echo 'myfile' > myfile
pete@icebox:~/Desktop$ echo 'myfile2' > myfile2
pete@icebox:~/Desktop$ echo 'myfile3' > myfile3
pete@icebox:~/Desktop$ ln -s myfile myfilelink
pete@icebox:~/Desktop$ ls -li
total 12
151 -rw-rw-r-- 1 pete pete 7 Jan 21 21:36 myfile
93401 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile2
93402 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile3
93403 lrwxrwxrwx 1 pete pete 6 Jan 21 21:39 myfilelink -> myfile
Hier haben wir einen symbolischen Link namens myfilelink erstellt, der auf myfile zeigt. Wenn Sie ls verwenden, um einen ls symlink anzuzeigen, wird er durch das l am Anfang der Berechtigungszeichenfolge und das ->-Symbol, das auf das Ziel zeigt, deutlich gekennzeichnet. Beachten Sie, dass der Symlink seine eigene eindeutige Inode-Nummer (93403) hat. Da Symlinks auf Dateinamen und nicht auf Inodes zeigen, können sie verschiedene Dateisysteme überspannen.
Hardlinks verstehen
Die andere Art von Link ist ein Hardlink. Ein Hardlink erstellt einen weiteren Dateieintrag, der direkt auf denselben Inode wie die Originaldatei zeigt.
Erstellen wir einen Hardlink für myfile2:
pete@icebox:~/Desktop$ ln myfile2 myhardlink
pete@icebox:~/Desktop$ ls -li
total 16
151 -rw-rw-r-- 1 pete pete 7 Jan 21 21:36 myfile
93401 -rw-rw-r-- 2 pete pete 8 Jan 21 21:36 myfile2
93402 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile3
93403 lrwxrwxrwx 1 pete pete 6 Jan 21 21:39 myfilelink -> myfile
93401 -rw-rw-r-- 2 pete pete 8 Jan 21 21:36 myhardlink
Beachten Sie, dass myhardlink exakt dieselbe Inode-Nummer (93401) wie myfile2 teilt. Auch die Link-Anzahl für beide Dateien ist auf 2 gestiegen. Das liegt daran, dass nun zwei Dateieinträge auf denselben Inode zeigen. Wenn Sie den Inhalt von myfile2 ändern, werden die Änderungen in myhardlink widergespiegelt, und umgekehrt. Wenn Sie myfile2 löschen, sind die Daten der Datei immer noch über myhardlink zugänglich. Der Inode und seine Daten werden erst dann von der Festplatte entfernt, wenn die Link-Anzahl auf Null sinkt. Da Hardlinks auf Inodes zeigen, die innerhalb eines einzigen Dateisystems eindeutig sind, können sie keine verschiedenen Dateisysteme überspannen.
Erstellen von Symlinks und Hardlinks
You können beide Arten von Links mit dem Befehl ln erstellen. Die Syntax ist unkompliziert.
Um einen symbolischen Link zu erstellen, verwenden Sie das Flag -s:
ln -s /pfad/zum/original /pfad/zum/link
Um einen Hardlink zu erstellen, lassen Sie das Flag -s weg:
ln /pfad/zum/original /pfad/zum/link
Die Verwendung der Befehle ls symlinks oder allgemeiner ls links mit der Option -l ist für die Verwaltung und Identifizierung dieser verschiedenen Dateitypen unerlässlich.