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
doc:systeme:ln [11/08/2024 18:50]
agp91 [Les liens physiques (hardlink)] : Ajout de la sous-section [Repertoires et lien physique]
doc:systeme:ln [14/08/2024 17:38] (Version actuelle)
agp91 [Les liens physiques (hardlink) ] : Corrections de code
Ligne 11: Ligne 11:
   * Suivi : {{tag>​à-compléter}}{{tag>​à-tester}}   * Suivi : {{tag>​à-compléter}}{{tag>​à-tester}}
     * Création par [[user>​smolski]] le 21/06/2010     * Création par [[user>​smolski]] le 21/06/2010
-    * Testé ​par [[user>​agp91]] le 04/07/2024+    * Modifié ​par [[user>​agp91]] le 11/08/2024
   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=113446|C'​est ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=113446|C'​est ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
Ligne 655: Ligne 655:
 \\ \\
 L'​identifiant d'un inode est unique, uniquement dans le système de fichier au quel il appartient.\\ L'​identifiant d'un inode est unique, uniquement dans le système de fichier au quel il appartient.\\
-Puisqu'​il ​ne peut être unique ​dans d'​autres systèmes ​de fichier, un nom ne peut pas être lié à l'​inode d'un fichier, situé dans un autre système de fichier.</​note>​+Puisque l'identifiant d'un inode n'est unique que dans son système de fichier (il peut exister ​dans un autre système ​de fichier), un nom ne peut donc être lié à l'​inode d'un autre système de fichier.</​note>​
  
 Commençons par créer un fichier de départ vide, ''​test2.txt''​ : Commençons par créer un fichier de départ vide, ''​test2.txt''​ :
Ligne 676: Ligne 676:
 <code user> <code user>
 ln test2.txt lien2.txt ln test2.txt lien2.txt
-ls -lv+ls -l
 </​code><​code>​ </​code><​code>​
 total 0 total 0
Ligne 770: Ligne 770:
 </​code>​ </​code>​
  
-Bien que ces fichiers ont  une taille de 32 octets chacun (c'est indiqué dans le 5em champ),\\ +Ces fichiers ont  une taille de 32 octets chacun (c'est indiqué dans le 5em champ),\\ 
-Ils occupe dans le système de fichier, chacun un bloc.\\ +Selon ''​ls''​ils occuperaient ​chacun un bloc (de 4 K octets), qu'elle additionne.\\
-Soit ici, un chacun ​4 K octets (4096 octets).\\ +
- +
-La commande ''​ls'​' additionne ​les deux fichiers liés.\\+
 C'est ce que montre ''​ls -lsh''​ : C'est ce que montre ''​ls -lsh''​ :
  
Ligne 785: Ligne 782:
 </​code>​ </​code>​
  
-Comme d'écrit ​plus haut (à la section [[#​creer-un-lien-symbolique|Créer un lien symbolique]]), ​la commande ''​stat'' ​avec l'​option ''​-c''​ permet de définir les informations ​retournés. Voici d'autre formats supportés :+Il en va de même avec la commande ''​stat''​ (d'écrite ​plus haut à la section [[#​creer-un-lien-symbolique|Créer un lien symbolique]]), ​qui avec l'​option ''​-c''​ permet de définir les informations ​retournées.\\ 
 +Voici d'autres ​formats supportés :
  
   * ''​%b''​ indique le nombre de bloc utilisé par un fichier.   * ''​%b''​ indique le nombre de bloc utilisé par un fichier.
Ligne 799: Ligne 797:
  
 La commande ''​stat''​ utilise par défaut des blocs de 512 octets.\\ La commande ''​stat''​ utilise par défaut des blocs de 512 octets.\\
-Comme 8x512=4096 (soit 4K octets), cela correspond aux tailles retournées par la commande ''​ls''​.+8x512 = 4096 (soit 4K octets), cela correspond aux tailles retournées par la commande ''​ls''​.
  
 Mais cela est évidement erroné,\\ Mais cela est évidement erroné,\\
-Puisque ''​lien2.txt''​ et ''​test2.txt'',​ sont des noms (chemins) différents,​ qui mènent au même fichier stocké dans le système de fichier (sur le disque).+Puisque ''​lien2.txt''​ et ''​test2.txt'',​ sont des noms (chemins) différents,​ qui mènent au même fichier ​(inode) ​stocké dans le système de fichier (sur le disque).
  
 <note tip> <note tip>
Ligne 819: Ligne 817:
 Il est remarquable qu'ici ne soit pas retourné le fichier original.\\ Il est remarquable qu'ici ne soit pas retourné le fichier original.\\
 ''​Du''​ a simplement retourné le premier lien physique rencontré.\\ ''​Du''​ a simplement retourné le premier lien physique rencontré.\\
-Cela met en évidence qu'il n'y a pas de différence entre le fichier original et le(s) fichier(s) qui lui est(sont) lié(s).+Cela met en évidence qu'il n'y a pas de différence entre le fichier original et le(s) fichier(s) qui lui est (sont) lié(s).
  
-==== Copie de fichier lié physiquement ====+==== Copies ​de fichier lié physiquement ====
  
 8 K octets sera la taille totale obtenu si l'on copie ces deux fichiers liés : 8 K octets sera la taille totale obtenu si l'on copie ces deux fichiers liés :
Ligne 885: Ligne 883:
 </​code><​code>​ </​code><​code>​
 8667149 4 lien2.txt 8667149 4 lien2.txt
-8695636 2 rep+8695636 2 rep1
 8667149 4 test2.txt 8667149 4 test2.txt
 8667149 4 rep1/​lien2.txt 8667149 4 rep1/​lien2.txt
Ligne 937: Ligne 935:
  
 <code user> <code user>
-stat -c "%i %h %n" rep1 rep1/. rep1/.. .+stat -c "%i %h %n" rep1 rep1/. rep1/.. . ~/test_lien
 </​code><​code>​ </​code><​code>​
 8695636 2 rep1 8695636 2 rep1
Ligne 943: Ligne 941:
 8695247 3 rep1/.. 8695247 3 rep1/..
 8695247 3 . 8695247 3 .
 +8695247 3 /​home/​martin/​test_lien
 </​code>​ </​code>​
  
Ligne 948: Ligne 947:
  
   * ''​rep1''​ et ''​rep1/​.''​ ont le même inode.   * ''​rep1''​ et ''​rep1/​.''​ ont le même inode.
-  * ''​.'' ​(''​test_lien''​et ''​rep1/​..''​ ont le même inode.+  * ''​.''​''​test_lien''​ et ''​rep1/​..''​ ont le même inode.
  
-Ainsi un répertoire est lié physiquement 2 fois.\\ +Ainsi un répertoire est lié physiquement 2 fois : Par son nom et par le fichier ''​.''​ qu'il contient.\\ 
-Plus un (+1) lien physique ​pour chacun de répertoires ​fils (sous-répertoires) qu'il contient.+Plus un (+1) lien physique ​par répertoire ​fils (sous-répertoire) qu'il contient.
  
-Par exemple, s'il est ajouté 4 autres répertoires ​(cela en fera cinq), le répertoire ''​test_lien''​ sera lié 7 fois :+Par exemple, s'il est ajouté 4 autres répertoires ​au répertoire ''​test_lien'' ​(cela lui fera cinq sous-répertoires),​ il sera alors lié 7 fois :
  
 <code user> <code user>
Ligne 965: Ligne 964:
  
 <code user> <code user>
-stat -c "%i %h %n" . rep*/..+stat -c "%i %h %n" ​~/​test_lien ​. rep*/..
 </​code><​code>​ </​code><​code>​
 +8695247 7 /​home/​martin/​test_lien
 8695247 7 . 8695247 7 .
 8695247 7 rep1/.. 8695247 7 rep1/..
Ligne 983: Ligne 983:
 ==== Suppression des fichiers ==== ==== Suppression des fichiers ====
  
-Suppression du fichier cible ''​test2.txt''​ :+Supprimer des fichiers liés n’altère en rien ceux qui restent. 
 + 
 +**__Note__ :** La commande ​''​rm -r //<​chemin_répertoire>//''​ permet de supprimer un répertoire non vide (et tout ce qu'il contient, sous-répertoires compris) 
 + 
 +<code user> 
 +rm -rv rep1 
 +</​code><​code>​ 
 +'​rep1/​lien2.txt'​ supprimé 
 +'rep1/test2.txt' ​supprimé 
 +répertoire ​'rep1' supprimé 
 +</​code>​ 
 + 
 +<code user> 
 +ls -li 
 +</​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 test2.txt 
 +</​code>​ 
 + 
 +Même supprimer le fichier original (qui en réalité ne peut plus être distingué),​ ne supprime pas les autres fichiers qui lui ont été liés : 
 <code user> <code user>
 rm test2.txt rm test2.txt
-ls -l+ls -li
 </​code><​code>​ </​code><​code>​
-total 4 +8667149 ​-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>​
 +
  
 Comme dit le captnfab dans sa relecture : \\ Comme dit le captnfab dans sa relecture : \\
-Il est à remarquer que le chiffre ​''​2'' ​est passé à ''​1''​ car il n'y a plus de second ​fichier lié.+Il est à remarquer que le chiffre ​indiquant le nombre de fichier lié est passé à ''​1''​ car il n'y a plus d'​autre ​fichier lié.\\ 
 +(Il ne reste plus qu'un seul nom lié à l'​inode du fichier).
  
-<note tip>​Chacun ​des fichiers liés par un lien physique survit nominalement et physiquement à l'​effacement de l'​autre.</​note>​+Pour supprimer définitivement ​des fichiers liés, tous doivent être supprimés.
  
-Pour supprimer définitivement les deux fichiers et leurs contenus, nous devons les effacer tous deux. 
 <code user> <code user>
-rm *2.txt+rm lien2.txt
 ls -l ls -l
 </​code><​code>​ </​code><​code>​
 total 0 total 0
 </​code>​ </​code>​
- 
-//Voilà pour la commande //''​ln''//​ dans tous ses états !// 
- 
-//Merci au //​**captnfab**//​ pour sa bienveillante et rigolote attention !// :-D 
  
 ===== Conclusion ===== ===== Conclusion =====
Ligne 1016: Ligne 1033:
  
 Autre point très intéressant,​ créer des liens, au lieu de copier les fichiers, assure que toute modification dans un fichier se retrouvera bien dans les « copies » dispersées un peu partout. Autre point très intéressant,​ créer des liens, au lieu de copier les fichiers, assure que toute modification dans un fichier se retrouvera bien dans les « copies » dispersées un peu partout.
 +
 +//Voilà pour la commande //''​ln''//​ dans tous ses états !//
 +
 +//Merci au //​**captnfab**//​ pour sa bienveillante et rigolote attention !// :-D
  
doc/systeme/ln.1723395038.txt.gz · Dernière modification: 11/08/2024 18:50 par agp91

Pied de page des forums

Propulsé par FluxBB