logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:systeme:ln [04/07/2024 15:51]
agp91 [Illustration pratique]
doc:systeme:ln [04/07/2024 18:14]
agp91 [Description]
Ligne 43: Ligne 43:
 == Les liens symboliques (symlink) == == Les liens symboliques (symlink) ==
  
-Un lien symbolique est constitué d'un réel fichier de petite taille ; il contient le nom du fichier auquel il correspond. Par conséquent,​ la suppression du fichier d'​origine,​ c'​est-à-dire la cible du lien, rendra le lien symbolique inutilisable puisqu'​il ne correspondra plus à un fichier valide ; le lien sera alors brisé. ​+Un lien symbolique est constitué d'un réel fichier de petite taille ; il contient le nom (chemin) ​du fichier auquel il correspond. Par conséquent,​ la suppression du fichier d'​origine,​ c'​est-à-dire la cible du lien, rendra le lien symbolique inutilisable puisqu'​il ne correspondra plus à un fichier valide ; le lien sera alors brisé. ​
  
 == Les liens physiques ou durs (hardlink) == == Les liens physiques ou durs (hardlink) ==
  
-Un lien dur associe deux ou plusieurs fichiers à un même espace sur le disque ​tout en préservant leurs indépendances lors de modifications ​de leurs contenusDe même, la suppression d'un fichier n'​affectera pas l'​autre.+Un lien dur associe deux ou plusieurs fichiers à un même espace sur le disque. Ainsi un fichier peut disposer réellement ​de plusieurs noms (chemins)La suppression d'un fichier ​lié physiquement ​n'​affectera pas les autres fichiers qui lui sont liés.
  
 **Nota :** \\ **Nota :** \\
Ligne 54: Ligne 54:
 //Merci de ces remarques habiles au concert de //​**Mahoru`Tsunemi**//​ et de //​**captnfab**//​ sur l'​IRC.//​ //Merci de ces remarques habiles au concert de //​**Mahoru`Tsunemi**//​ et de //​**captnfab**//​ sur l'​IRC.//​
  
-===== Illustration pratique ​=====+===== Préparatifs ​=====
  
 Afin de bien comprendre les principes que nous avons décrits ci-haut, nous allons illustrer tout cela à l'aide de quelques exemples simples. Afin de bien comprendre les principes que nous avons décrits ci-haut, nous allons illustrer tout cela à l'aide de quelques exemples simples.
- 
-Débutant - À savoir : 
- 
-  *  L'​opérateur de redirection **''​[[:​doc:​programmation:​shell:​chevrons |>​]]''​** (chevron fermant) 
-  * La commande **''​[[:​doc:​systeme:​ls |ls]]''​** 
-  *  La commande **''​[[:​doc:​systeme:​rm |rn]]''​** 
-  * [[:​doc:​systeme:​droits-unix |Les Droits]] 
-  * La commande d'​édition **''​[[:​doc:​editeurs:​nano | nano]]''​** 
- 
-//Et oui, tout ça cher Débutant ! Il reste que la plupart de ces commandes sont les commandes en ligne principales __usuelles__ à utiliser dans un terminal.// :-) 
- 
- 
-==== Créer les répertoires et fichiers tests que nous allons utiliser ==== 
  
 Dans ''/​home/​votre_user/'',​ créez un répertoire nommé ''​test_lien''​ avec [[:​doc:​systeme:​mkdir|mkdir]] et s'y positionner avec [[:​doc:​programmation:​shell:​cd | cd]] : Dans ''/​home/​votre_user/'',​ créez un répertoire nommé ''​test_lien''​ avec [[:​doc:​systeme:​mkdir|mkdir]] et s'y positionner avec [[:​doc:​programmation:​shell:​cd | cd]] :
Ligne 93: Ligne 80:
 </​code>​ </​code>​
  
-===== Créer un lien symbolique ​(symlink) : =====+===== Les liens symboliques ​(symlink) : =====
  
 Situation de départ : Situation de départ :
 <code user>ls -l</​code>​ <code user>ls -l</​code>​
-<​code>​total 4+<​code>​
 -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt
 </​code>​ </​code>​
 +
 +==== Créer un lien symbolique ​ ====
  
 On crée le lien symbolique : On crée le lien symbolique :
Ligne 109: Ligne 98:
 <code user> <code user>
 ls -l</​code>​ ls -l</​code>​
-<​code>​total 4+<​code>​
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt
 -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt
 </​code>​ </​code>​
  
-Attardons-nous un peu sur la ligne : +Attardons-nous un peu sur la ligne : ''​**l**rwxrwxrwx 1 martin martin ​ **9** déc 14 22:05 lien1.txt **<​nowiki>​-></​nowiki> ​test1.txt**''​
-**l**rwxrwxrwx 1 martin martin ​ **9** déc 14 22:05 lien1.txt **->** test1.txt+
  
-  - **l** indique un lien symbolique ​sur ce fichier +  - Dans le 1er champ (''​lrwxrwxrwx''​),​ la première lettre : **''​l''​**indique ​que ce fichier est un lien symbolique. 
-  - **9** indique l'​occupation ​réelle ​du fichier ​sur le disque +  - Dans le 5em champ, le chiffre ​**''​9''​**indique l'​occupation ​en octet du fichier. 
-  - **-> test1.txt** indique le fichier ​pointé par le lien symbolique+  - **''<​nowiki>​-> test1.txt</​nowiki>''​** indique le fichier ​que désigne ​le lien symbolique.
  
 Précisons aussi que : Précisons aussi que :
  
-  * Un //​fichier ​symbole// créé avec la commande ''​ln'' ​ne contient ​pas l'​occupation disque affichée ​qui est contenue dans le fichier cible. +  * La taille (occupation disque) d'​un ​//​fichier ​d'un lien symbolique// ne correspond ​pas à l'​occupation disque affichée ​du fichier cible. 
-  * Les modifications ​qui sont portées dans le contenu ​apparent ​d'un fichier ​symbole ​seront ​portés ​uniquement dans le fichier cible. +  * Les modifications ​apportées au contenu d'un fichier ​(cible) désigné par un lien symbolique ​seront ​portées ​uniquement dans le fichier cible. 
-  * La destruction totale d'​un ​fichier symbole ​ne détruit rien dans le fichier cible.+  * La destruction totale d'​un ​lien symbolique ​ne détruit rien dans le fichier cible.
  
-==== Modification du contenu ​des fichiers liés ====+==== Modification du contenu ====
  
 <code user> <code user>
Ligne 147: Ligne 135:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt
 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt
 </​code>​ </​code>​
  
-Nous pouvons voir que seul le fichier cible //test1.txt// s'est trouvé modifié, passant de **13** à **30** octets d'​occupation !+Nous pouvons voir que seul le fichier cible '''​test1.txt'' ​s'est trouvé modifié, passant de **13** à **30** octets d'​occupation !
  
-== Modifier directement le fichier cible donnera le même résultat : ==+Modifier directement le fichier cible donnera le même résultat :
  
-  - nul pour le fichier ​symbole +  - Aucune modification ​pour le fichier ​du lien symbolique 
-  - effectif ​pour le fichier cible+  - Effectif ​pour le fichier cible
  
-=== Occupation concrète sur le disque ===+==== Occupation concrète sur le disque ​====
  
-À l'aide de la commande ''​ls -li'',​ nous pouvons voir l'​occupation disque ​générée par un lien //symlink// en constatant ​les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés :+À l'aide de la commande ''​ls -li'',​ nous pouvons voir l'​occupation disque ​et comparer ​les chiffres indiquant les indexs ​respectifs des inodes de chacun des fichiers liés :
  
 <code user> <code user>
 ls -li ls -li
 </​code><​code>​ </​code><​code>​
-total 4 
 8667148 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt 8667148 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:05 lien1.txt -> test1.txt
 8667139 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt 8667139 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt
 </​code>​ </​code>​
  
-Cela implique qu'​__il y a bien deux occupations différentes__ sur le disque, avec une occupation qui restera toujours fixe et minimale pour le fichier ​symbole. :-)+Cela implique qu'​__il y a bien deux occupations différentes__ sur le disque, avec une occupation qui restera toujours fixe et minimale pour le fichier ​du lien symbolique. :-)
  
-==== Modification par effacement du fichier symbole ​====+==== Suppression d'un lien symbolique ​====
  
-L'​effacement du fichier ​symbole ​''​lien1.txt''​ ne détruit ni le contenu, ni l'​apparence du fichier cible ''​test1.txt''​ :+L'​effacement du fichier ​du lien symbolique ​''​lien1.txt''​ ne détruit ni le contenu, ni l'​apparence du fichier cible ''​test1.txt''​ :
  
 <code user> <code user>
Ligne 181: Ligne 167:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt
 </​code>​ </​code>​
  
-==== Modification du nom des fichiers liés : ==== +Recréons le même lien symbolique ''​lien1.txt'' ​:
- +
-Recréons le même fichier symbole //lien1.txt// :+
 <code user> <code user>
 ln -s test1.txt lien1.txt ln -s test1.txt lien1.txt
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien1.txt -> test1.txt
 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt
 </​code>​ </​code>​
  
-=== Modifier le nom du fichier symbole ​===+==== Modification ​du nom d'un lien symbolique ====
  
-Modifions le nom du fichier ​symbole ​lien1.txt à l'aide de la [[:​doc:​systeme:​mv |commande mv]] : +Modifions le nom du fichier ​du lien symbolique ''​lien1.txt'' ​à l'aide de la [[:​doc:​systeme:​mv |commande mv]] :
-<code user>mv lien1.txt lien2.txt</​code>​+
  
 <code user> <code user>
 +mv lien1.txt lien2.txt
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien2.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien2.txt -> test1.txt
 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt
Ligne 212: Ligne 193:
 Tout reste fonctionnel et en place. :-) Tout reste fonctionnel et en place. :-)
  
-<​note>​Pour poursuivre cette illustration dans la clarté, remettons le nommage du fichier symbole ​''​lien2.txt''​ en ''​lien1.txt''​.</​note>​+<​note>​Pour poursuivre cette illustration dans la clarté, remettons le nommage du lien symbolique ​''​lien2.txt''​ en ''​lien1.txt''​.</​note>​
 <code user>mv lien2.txt lien1.txt</​code>​ <code user>mv lien2.txt lien1.txt</​code>​
  
-=== Modifier le nom du fichier cible ===+==== Modification ​du nom d'​un ​fichier cible ====
  
 Modifions le nom du fichier cible ''​test1.txt''​ : Modifions le nom du fichier cible ''​test1.txt''​ :
-<code user>mv test1.txt test2.txt+ 
 +<code user> 
 +mv test1.txt test2.txt
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 22:13 lien1.txt -> test1.txt
 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test2.txt -rw-r--r-- 1 martin martin 30 déc 14 22:08 test2.txt
 </​code>​ </​code>​
  
-//Patatras !// Nous voyons alors que le fichier cible ''​lien1.txt''​ se met en carafe ​il devient ​écrit en rouge dans le terminal ​bash) dès le //rafraîchissement// du terminal ouvert.+//Patatras !// Nous voyons alors que le fichier cible ''​lien1.txt''​ se met en carafe ​(il alors est écrit en rouge dans le terminal //bash//).
  
 Il suffit : Il suffit :
-  ​- de renommer le fichier cible ''​test2.txt''​ en ''​test1.txt'',​ +  ​* De renommer le fichier cible ''​test2.txt''​ en ''​test1.txt'',​ 
-<​del> ​ - ou bien de recréer le fichier symbole ​''​lien1.txt'' ​en le pointant sur le fichier cible ''​test2.txt'' ​par reformulation ​de la commande ​: +  ​* Ou bien de recréer le lien symbolique ​''​lien1.txt'' ​avec la commande ''​ln'',​\\ En désignant ​le fichier cible ''​test2.txt''​\\ Et en utilisant l'​option ''​f''​ (pour forcer l'​écrasement du fichier ​de destination) ​:\\ ''​ln -sf test2.txt lien1.txt''​\\ :!: Attention de ne pas intervertir les deux noms, car sinon ce sera le fichier cible qui sera écrasé.
-   ln -test2.txt lien1.txt</​del>​+
  
 Et tout redevient effectif. Et tout redevient effectif.
  
-Pour la suite du tuto, choisir de remettre le fichier en test1.txt +Pour la suite du tuto, choisir de remettre le fichier ​cible en ''​test1.txt''​
-<code user>mv test2.txt test1.txt</​code> ​+
  
-==== Modifications des droits des fichiers liés : ====+<code user> 
 +mv test2.txt test1.txt 
 +</​code> ​
  
-Depuis le début de cette illustration,​ nous voyons que les droits restent immuablement complets pour le fichier ​symbole ​''​lien1.txt''​.+==== Modifications des droits ​ ==== 
 + 
 +Depuis le début de cette illustration,​ nous voyons que les droits restent immuablement complets pour le fichier ​du lien symbolique ​''​lien1.txt''​.
  
    rwx rwx rwx    rwx rwx rwx
  
 Essayons de les modifier. \\ Essayons de les modifier. \\
-Modifions la propriété du fichier ​symbole ​''​lien1.txt''​ pour que root devienne le propriétaire. +Modifions la propriété du fichier ​du lien symbolique ​''​lien1.txt''​ pour que //root// devienne le propriétaire.
- +
-=== Modification des droits d'un fichier symbole ===+
  
 Situation de départ : Situation de départ :
Ligne 253: Ligne 235:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt
 -rw-r--r-- 1 martin martin 13 déc 14 22:59 test1.txt -rw-r--r-- 1 martin martin 13 déc 14 22:59 test1.txt
Ligne 266: Ligne 247:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt
 -rwx------ 1 martin martin 13 déc 14 22:59 test1.txt -rwx------ 1 martin martin 13 déc 14 22:59 test1.txt
 </​code>​ </​code>​
  
-Nous voyons que le fichier ​symbole ​''​lien1.txt''​ n'est pas affecté par cette modifications des droits :+Nous voyons que le fichier ​du lien symbolique ​''​lien1.txt''​ n'est pas affecté par cette modifications des droits :
   lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt   lrwxrwxrwx 1 martin martin ​ 9 déc 14 23:00 lien1.txt -> test1.txt
  
-et que le fichier cible ''​test1.txt''​ s'en trouve directement rectifié par cette commande exécuter sur le fichier ​symbole ​''​lien1.txt''​ :+Et que le fichier cible ''​test1.txt''​ s'en trouve directement rectifié par cette commande exécuter sur le fichier ​du lien symbolique ​''​lien1.txt''​ :
   rwx------ 1 martin martin 13 déc 14 22:59 test1.txt   rwx------ 1 martin martin 13 déc 14 22:59 test1.txt
  
-===== Créer un lien physique ​(hardlink) : =====+===== Les liens physiques ​(hardlink) : =====
  
 Un lien physique est la création d'un fichier à l'​identique de celui qu'il pointe. Un lien physique est la création d'un fichier à l'​identique de celui qu'il pointe.
Ligne 299: Ligne 279:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 0 
 -rw-r--r-- 1 martin martin 0 déc 15 00:02 test2.txt -rw-r--r-- 1 martin martin 0 déc 15 00:02 test2.txt
 </​code>​ </​code>​
Ligne 308: Ligne 287:
 ls -lv ls -lv
 </​code><​code>​ </​code><​code>​
-total 0 
 -rw-r--r-- 2 martin martin 0 déc 15 00:02 lien2.txt -rw-r--r-- 2 martin martin 0 déc 15 00:02 lien2.txt
 -rw-r--r-- 2 martin martin 0 déc 15 00:02 test2.txt</​code>​ -rw-r--r-- 2 martin martin 0 déc 15 00:02 test2.txt</​code>​
Ligne 318: Ligne 296:
 Le chiffre ''​1''​ devient ''​2''​ dans la ligne du fichier cible test2.txt : Le chiffre ''​1''​ devient ''​2''​ dans la ligne du fichier cible test2.txt :
  
-Pareillement dans la ligne du fichier symbole physique ​lien2.txt ​créé ​: +Pareillement dans la ligne du ''​lien2.txt'' ​''​-rw-r--r-- **2** martin martin 0 déc 15 00:02 lien2.txt''​
- +
-<​code>​ +
--rw-r--r-- **2** martin martin 0 déc 15 00:02 lien2.txt +
-</​code>​+
  
 Une autre différence est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement. Une autre différence est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement.
  
-==== Modifions le contenu des fichiers ​liés physiquement ​==== +==== Modifications du contenu des fichiers ====
- +
-=== Ajout ===+
  
 Ajoutons du contenu dans l'un puis un second ajout dans l'​autre des fichiers liés //​physiquement//​ en vérifiant les contenus à chaque fois : Ajoutons du contenu dans l'un puis un second ajout dans l'​autre des fichiers liés //​physiquement//​ en vérifiant les contenus à chaque fois :
Ligne 357: Ligne 329:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 8 
 -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt
 -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt
Ligne 364: Ligne 335:
 Toutes les modifications,​ __ajoutées ou retranchées__ dans chacun des fichiers agira de même dans l'​autre. Toutes les modifications,​ __ajoutées ou retranchées__ dans chacun des fichiers agira de même dans l'​autre.
  
-=== Occupation concrète sur le disque ===+==== Occupation concrète sur le disque ​====
  
 À l'aide de la commande ''​ls -li'',​ nous pouvons voir l'​occupation disque générée par un lien //​hardlink//​ en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : À l'aide de la commande ''​ls -li'',​ nous pouvons voir l'​occupation disque générée par un lien //​hardlink//​ en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés :
Ligne 371: Ligne 342:
 ls -li ls -li
 </​code><​code>​ </​code><​code>​
-total 8 
 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt
 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt
Ligne 382: Ligne 352:
 //On va pas s'​gêner avec pour les gonfler de données car cela ne doublera pas l'​occupation physique du disque !// :-D //On va pas s'​gêner avec pour les gonfler de données car cela ne doublera pas l'​occupation physique du disque !// :-D
  
-=== Suppression ===+==== Suppression ​des fichiers ====
  
 Suppression du fichier cible ''​test2.txt''​ : Suppression du fichier cible ''​test2.txt''​ :
Ligne 389: Ligne 359:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 4 
 -rw-r--r-- 1 martin martin 32 déc 15 13:52 lien2.txt -rw-r--r-- 1 martin martin 32 déc 15 13:52 lien2.txt
 </​code>​ </​code>​
Ligne 403: Ligne 372:
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
-total 0 
 </​code>​ </​code>​
  
doc/systeme/ln.txt · Dernière modification: 04/07/2024 19:29 par agp91

Pied de page des forums

Propulsé par FluxBB