GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer des liens matériels et logiciels (lien symbolique) sur les systèmes Linux

Souvent, dans tous les systèmes d'exploitation basés sur Linux/Unix, il est sage de comprendre les concepts sous-jacents, alors seul un peut apprécier la beauté des commandes et la façon dont elles sont implémentées.

Quelques petits détails nous aideront beaucoup dans le débogage et le dépannage de nombreuses situations difficiles si nous connaissons bien à l'avance ces commandes et les concepts associés.

Dans ce sujet, je couvrirai ce que sont les liens, les différents types, les caractères distinctifs et comment ils peuvent être mieux utilisés avec les concepts requis.

En exécutant la commande "man ln", vous pouvez voir que cela indique "créer un lien entre les fichiers" et ne parle pas de liens souples ou physiques.

[email protected] ~}$ man ln

De même, la commande "man link" décrit comme "appeler la fonction de lien pour créer un fichier".

Lien logiciel :

Le lien symbolique, comme son nom l'indique, est juste un nouveau lien créé vers le nouveau fichier. Dans ce cas, le numéro d'inode du nouveau fichier pointera vers l'ancien fichier.

Lien physique :

Dans ce cas, l'ancien et le nouveau fichier pointeront tous les deux vers le même numéro d'inode.

Lien symbolique :

Dans certaines versions Unix/Linux, les liens symboliques et symboliques sont traités de la même manière. Mais la différence réelle est que les numéros d'inode du nouveau et de l'ancien fichier pointeront vers un nouveau numéro d'inode. Cela dépendra entièrement de la mise en œuvre.

Remarque 1 :- Dans de nombreux cas, les terminologies symboliques et de liens symboliques sont utilisées de manière interchangeable. Mais il faut savoir quand utiliser quoi.

Utilisation de la commande "ln" pour créer des liens physiques et des liens symboliques

Créer un lien physique

1) La commande "man ln" fournira la sortie suivante.

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

2) Lorsque la commande "ln" est passée sans aucun argument, l'erreur "opérande de fichier manquant" est générée.

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

3) Création du lien physique entre deux fichiers. Vérifiez d'abord les fichiers existants, le cas échéant, sinon créez le ou les fichiers fraîchement, puis liez-les. Vous trouverez ci-dessous l'approche étape par étape,

[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) Créez le fichier à l'aide de la commande "toucher"

[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) Entrez le contenu dans le fichier à l'aide de la commande "cat", puis appuyez sur "ctrl + c" pour enregistrer et quitter.

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

iii) Créez le lien physique entre les fichiers "123.txt" et "321.txt". Dans ce cas, le "123.txt" existait déjà avec le contenu "Bienvenue dans ce monde".

[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) Vérifiez les numéros d'inode (nœud d'index) des fichiers. Pour les deux fichiers, le numéro d'inode est le même et qui est 794583. Vérifiez également le contenu du nouveau fichier "321.txt" qui est également identique à "123.txt".

[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!

Remarque 2 :- Le numéro d'inode est un numéro d'index unique généré pour tout fichier créé dans les systèmes d'exploitation Linux/unix. Ces numéros d'inode sont stockés dans les attributs de répertoire/fichier du répertoire /proc. Mais en cas de liens, ces numéros d'inode sont partagés entre les fichiers et seul le chemin est mis à jour dans la table des fichiers.

v) Créez un autre fichier appelé "456.txt" et liez-le à l'aide de la commande ln à "321.txt". Maintenant, les trois fichiers ont les mêmes numéros d'inode. Le contenu de "456.txt" sera le même que celui du fichier d'origine.

[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) Lorsque le fichier source ou l'un de ces fichiers est supprimé, cela n'aura aucun impact sur les autres fichiers. Le fichier source peut être supprimé à l'aide de la commande "rm". Le contenu d'un autre fichier n'aura aucun impact non plus.

[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) La création de liens physiques entre les répertoires n'est pas autorisée.

[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) Toute modification du contenu d'un fichier aura un impact et modifiera le contenu d'un autre fichier en conséquence, voici les étapes expliquées,

[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

Création d'un lien symbolique :

1)  Créez le fichier "src.txt" à l'aide de la commande "touch" et entrez le contenu comme "Hello World" à l'aide de la commande cat, puis appuyez sur "ctrl + c" pour enregistrer et quitter.

[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) Créez le fichier de destination en tant que "dst.txt" et à l'aide des options de ligne de commande "ln -s", créez le lien symbolique (également appelé lien symbolique). Vérifiez le contenu du fichier "dst.txt" et le même contenu que celui de "src.txt" peut être vu.

[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) En cas de liens symboliques, le numéro d'inode du fichier source et du fichier de destination diffère. De plus, dans les autorisations, la lettre "l" apparaît indiquant qu'il s'agit de liens. "dst.txt–>src.txt" sera le nouveau lien établi maintenant.

[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) La création symbolique pour les répertoires est autorisée. Ceci est expliqué ci-dessous dans les étapes

[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) Numéro d'inode pour tous les fichiers/répertoires (la source et la destination sont différentes)

[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) Des liens symboliques peuvent être créés pour les répertoires comme expliqué précédemment. Une fois ces répertoires avec lien symbolique créés, à l'intérieur de ces répertoires des fichiers peuvent être créés. Cela rendra plus intéressant de savoir comment cela se comporte maintenant. Lorsque les fichiers sont créés dans le répertoire source, la même chose se reflète également dans le répertoire de destination. Les étapes suivantes expliquent cela clairement.

[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

Remarque 3 :- Nous pouvons avoir n'importe quel nombre de liens imbriqués. Mais l'utilisateur/administrateur qui crée ces liens symboliques doit être conscient du fait que ceux-ci prêtent à confusion. Parfois, ils peuvent être oubliés et créer des résultats indésirables. Ils doivent donc être prudents.

Remarque 4  :-  Il existe certaines possibilités de lien "symbolique" ou "soft" pointant vers un lien inexistant. C'est ce qu'on appelle "Lien suspendu". Cela pointera vers nulle part.

Remarque 5 :- il existe des appels système utilisés sous linux/unix pour créer des liens physiques OU symboliques au niveau de la programmation (en utilisant des programmes C/C++ au niveau du système). Ce sont 1) lien symbolique 2) lien symbolique.

Ceux-ci ne doivent pas être confondus avec les utilitaires de ligne de commande que j'ai décrits ci-dessus.

Suppression des liens symboliques/liens symboliques

Les liens symboliques ou symboliques sont supprimés à l'aide des commandes "rm" et unlink.

Syntaxe :

# rm

# dissocier

Suppression des répertoires Soft Link

Syntaxe :

# rm

# dissocier

Conclusion :

La création de liens matériels ou logiciels sera très utile pour les administrateurs et les développeurs. Le matériel de référence ci-dessus vous sera utile tout en comprenant quel type de lien nous créons et en quoi il est utile. Cet article vous aidera également à comprendre les différences et l'utilisation des liens.


Linux
  1. Comment créer des liens souples et physiques sous Linux

  2. RHEL 7 – RHCSA Notes :Créez des liens matériels et logiciels.

  3. Qu'est-ce que les liens souples et les liens durs dans le système de fichiers Linux

  4. Comment créer et monter des systèmes de fichiers sous Linux

  5. Différence entre les liens symboliques et les liens physiques sous Linux

Expliquer Soft Link et Hard Link sous Linux avec des exemples

Comment créer un lien symbolique vers un fichier sous Linux

Comment créer et utiliser un fichier d'échange sous Linux

Qu'est-ce que les liens symboliques sous Linux ? Comment créer des liens symboliques ?

La commande ln sous Linux :créer des liens logiciels et matériels

Liens matériels et liens logiciels sous Linux :tout ce que vous devez savoir