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

Wie man mit Hardlinks und Softlinks unter Linux arbeitet

Hardlinks und Softlinks sind wichtige Konzepte, die Sie verstehen sollten, wenn Sie in einer Unix-ähnlichen Umgebung arbeiten. In diesem Artikel werden wir erörtern, was Hardlinks und Softlinks sind und wie sie unter Linux erstellt werden.

Linux behandelt alles als Datei. Unabhängig davon, ob es sich um ein Blockgerät, ein Zeichengerät, einen Socket oder eine benannte Pipe handelt, behandelt Linux sie als Datei. Hardlinks und weiche Links sind auch ein Dateityp, der tatsächlich in Bezug auf eine andere Datei erstellt wird.

Was ist Hardlink unter Linux

Hardlink ist wie ein Klon der Originaldatei. Alle Hardlinks haben dieselbe Inode-Nummer und das Entfernen der Originaldatei oder einer anderen Hardlink-Datei hat keine Auswirkungen auf andere Dateien, und dennoch können Sie den Dateiinhalt lesen.

HINWEIS :Für Verzeichnisse können keine Hardlinks erstellt werden.

Wie man Hardlinks unter Linux erstellt

Sehen wir uns an, wie man mit Hardlinks arbeitet. Ich erstelle eine Datei mit dem Namen file1.txt und einige Inhalte hineinschreiben.

$ cat file1.txt

Führen Sie nun den Befehl ls mit dem -i aus -Flag, um die Inode-Nummer von file1.txt zu überprüfen und Linkanzahl.

$ ls -li file1.txt

Erstellen Sie nun einen neuen Hardlink und führen Sie denselben ls-Befehl aus um die Inode-Nummer zu überprüfen. Sie werden sehen, dass beide Dateien dieselben Inode-Nummern haben.

$ ln <source-file> <destination-file>
$ ln file1.txt file2.txt

Ich werde jetzt eine neue Hardlink-Datei aus file2.txt erstellen die bereits aus file1.txt erstellt wurde . Überprüfen Sie die Anzahl der Links und sie wird in allen Dateien auf 3 aktualisiert.

$ ls -li file2.txt /home/karthick/file3.txt

So entfernen Sie Hardlinks unter Linux

Wenn Sie nun eine der fest verknüpften Dateien löschen, wird die Verknüpfungsanzahl in allen Dateien entsprechend aktualisiert, und Sie können weiterhin auf den Dateiinhalt zugreifen.

$ rm file1.txt

Um alle fest verknüpften Dateien vollständig aus dem Dateisystem zu entfernen, können Sie den find-Befehl verwenden, um die Dateien mit derselben Inode-Nummer zu suchen und die Dateien zu entfernen.

$ find <directory> -inum <inode-number>  # SYNTAX
$ find / -inum 415314          # Finding all files with Inode 51425368

Um die Dateien zu entfernen, können Sie eine exec hinzufügen Befehl zum finden Befehl.

$ sudo find / -inum415314 -exec rm -f {} \;

HINWEIS :Wenn Sie find ausführen Befehl und wenn Sie alle Verzeichnisse im Dateisystem scannen möchten, verwenden Sie besser sudo .

Was sind Softlinks unter Linux

Softlinks manchmal Symlinks oder symbolische Links genannt. Wenn Sie einen Softlink erstellen, wird eine neue Datei erstellt und diese Datei verweist auf die übergeordnete Datei. Stellen Sie sich dies als eine Verknüpfung vor, die Sie für Dateien und Ordner erstellen. Eine neue Datei hat einen anderen Inode als die übergeordnete Datei.

$ cat > slink.txt
$ ls -li slink.txt

So erstellen Sie Softlinks unter Linux

Erstellen Sie nun einen neuen Softlink und führen Sie denselben ls-Befehl aus um die Inode-Nummer zu überprüfen. Sie werden sehen, dass beide Dateien die gleichen Inode-Nummern haben. Sehen Sie sich auch die Anzahl der Links für jede Datei an.

$ ln -s <source> <destination>      # SYNTAX
$ ln -s file1.txt file2.txt

Schauen Sie sich die Linkanzahl aus dem obigen Bild an, sie wird immer 1 sein für Softlinks, da alle Dateien eine separate Inode-Nummer erhalten. Wenn Sie jetzt den Softlink löschen, hat dies keine Auswirkungen auf die Originaldatei.

#  grep ^ ./slink*   # Display the contents of file1, file2
#  rm slinked_linked.txt

Wenn Sie die verknüpfte Originaldatei löschen, wird ein Fehler ausgegeben, wenn Sie versuchen, darauf zuzugreifen.

$ ls -li
$ rm slink.txt
$ ls -li
$ cat slink_linked.txt

Manchmal entfernen Sie möglicherweise die übergeordnete Datei, vergessen jedoch, alle verknüpften Dateien zu entfernen. Sie können alle verwaisten Softlinks überprüfen und bereinigen, indem Sie den folgenden Befehl ausführen. Suchen versucht, alle verwaisten Links von /home/ zu finden Verzeichnis und -delete entfernt die Links.

# find -L /home/ -type l -delete

Das war es für diesen Artikel. Wir würden gerne Ihr wertvolles Feedback oder Tipps zur Verbesserung der Artikel hören.


Linux
  1. So manipulieren Sie Dateinamen mit Leerzeichen und Sonderzeichen in Linux

  2. So extrahieren Sie .gz- und .tar.gz-Dateien unter Linux

  3. So arbeiten Sie mit Benutzern und Gruppen in Linux

  4. Wie schreibe ich eine Datei mit C in Linux?

  5. Wie sehe ich du in GB anstelle von MB in Linux?

So verwenden Sie den Linux-rm-Befehl mit Beispielen

Linux-Hostdatei:Wie wird sie bearbeitet und verwendet?

So arbeiten Sie mit Vordergrund- und Hintergrundprozessen unter Linux

So arbeiten Sie mit File and Shell Provisioner in Vagrant

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

So gehen Sie Dateinamen mit Leerzeichen in Linux an