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
lien_physique_et_symbolique [Le 11/03/2019, 18:02]
L'Africain ancienne révision (Le 09/01/2019, 18:47) restaurée
lien_physique_et_symbolique [Le 07/05/2023, 14:54] (Version actuelle)
bcag2 [Exemple de lien symbolique] chown/chgrp -h
Ligne 6: Ligne 6:
  
 <note warning>​Attention,​ ce tutoriel est à l'​état d'​ébauche !</​note>​ <note warning>​Attention,​ ce tutoriel est à l'​état d'​ébauche !</​note>​
-I. Lien symbolique entre répertoire.+I. Lien symbolique entre répertoires
  
-D’une ​manière générale, ​voici comment utiliser la commande « ln » pour créer un lien symbolique : ln -s dossier_cible nom_du_lien+De manière générale, ​un lien symbolique (ou : "​symlink"​) est un raccourci. Voici comment utiliser la commande « ln » pour créer un lien symbolique : 
 +<​code>​ln -s dossier_cible nom_du_lien.</​code>​
  
-Dans cet exemple, nous souhaitons qu’en allant sur le répertoire /opt/jdk, nous atterrissons ​en réalité sur /​opt/​jdk1_7.2. Cela permet de facilement gérer le changement de version de JAVA.+Dans cet exemple, nous souhaitons qu’en allant sur le répertoire /opt/jdk, nous atterrissions ​en réalité sur /​opt/​jdk1_7.2. Cela permet de facilement gérer le changement de version de Java.
  
 Nous allons commencer par créer un lien symbolique entre deux répertoires. Nous utiliserons pour cela la commande « ln » (links) : Nous allons commencer par créer un lien symbolique entre deux répertoires. Nous utiliserons pour cela la commande « ln » (links) :
  
-ln –s /​opt/​jdk1_7.2 /opt/jdk+<​code>​ln –s /​opt/​jdk1_7.2 /opt/jdk</​code>​
  
 Le lien symbolique « /opt/jdk » sera alors créé. Le lien symbolique « /opt/jdk » sera alors créé.
 +
 +II. Lien physique vers un fichier
 +
 +Un lien physique (ou : "​hardlink"​) est utilisé pour faire un lien direct vers un fichier. Le lien physique se crée aussi //via// la commande "​ln",​ cette fois-ci sans option :
 +<​code>​ln /​chemin/​fichier/​a/​lier chemin/​fichier/​lié</​code>​
 +
 ===== Définitions ===== ===== Définitions =====
  
-Il existe deux types de liens qui permettent de rediriger un fichier vers un autre : les **liens physiques** (ou matériels) et les **liens symboliques**. ​+Il existe deux types de liens qui permettent de rediriger un fichier vers un autre : les **liens physiques** (ou matériels) et les **liens symboliques**.
  
-Avec un lien physique les données du disque sont pointées par plusieurs entrées de répertoire,​ contrairement à ce qui se passe avec un lien symbolique.+Avec un lien physiqueles données du disque sont pointées par plusieurs entrées de répertoire,​ contrairement à ce qui se passe avec un lien symbolique.
  
-Un lien matériel (ou physique) est l'​information exacte elle-même, située à la même position sur le disque dur. Avec un lien physique, vous pouvez copier certaines données du fichier cible, effacer le reste du fichier, et il continuera à exister. ​+Un lien matériel (ou physique) est l'​information exacte elle-même, située à la même position sur le disque dur. Avec un lien physique, vous pouvez copier certaines données du fichier cible, effacer le reste du fichier, et il continuera à exister.
  
-Un lien symbolique est un fichier qui pointe vers un autre fichier ; si vous supprimez le fichier cible, les liens symboliques pointeront ​alors vers un fichier inexistant.+Un lien symbolique est un fichier qui pointe vers un autre fichier ; si vous supprimez le fichier cible, les liens symboliques pointeront vers un fichier inexistant.
  
 Mais, d'​après la documentation originale, il est plus facile de distinguer les différences entre un tout petit lien symbolique et le fichier cible, que les différences entre plusieurs liens matériels. En fait, c'est impossible à distinguer, car il s'agit exactement de la même chose. Mais, d'​après la documentation originale, il est plus facile de distinguer les différences entre un tout petit lien symbolique et le fichier cible, que les différences entre plusieurs liens matériels. En fait, c'est impossible à distinguer, car il s'agit exactement de la même chose.
  
-  * **Lien physique** : permet de donner plusieurs noms/chemin d'​accèsà un même fichier en pointant sur un numéro de fichier(en interne Linux enregistre les fichiers sur la base d'un numéro et pas sur la base d'un nom). Un fichier peut donc avoir plusieurs noms, et existera tant qu'il a au moins un nom. Contrairement aux liens symboliques,​ **ils ne peuvent pointer que vers un autre élément du même système de fichiers.**+  * **Lien physique** : permet de donner plusieurs noms/chemin d'​accès à un même fichier en pointant sur un numéro de fichier (en interneLinux enregistre les fichiers sur la base d'un numéro ​(appelé numéro d'​index ou inode) ​et pas sur la base d'un nom). Un fichier peut donc avoir plusieurs noms, et existera tant qu'il a au moins un nom. Contrairement aux liens symboliques,​ **ils ne peuvent pointer que vers un autre élément du même système de fichiers.**
  
-Voici le résultat obtenu en entrant la commande **ls** avec l'​option -i (ou - -inode) qui permet d'​afficher le numéro d'​inode dans le système de fichiers:+Voici le résultat obtenu en entrant la commande **ls** avec l'​option -i (ou --inode)qui permet d'​afficher le numéro d'​inode dans le système de fichiers :
  
 <​code>​ dupont@dupont-pc:​~$ ls -i ~/​fichiersource ~/​Bureau/​monlienphysique ​ <​code>​ dupont@dupont-pc:​~$ ls -i ~/​fichiersource ~/​Bureau/​monlienphysique ​
Ligne 40: Ligne 47:
  
  
-  * **Lien symbolique** : permet d'​attribuer un autre chemin d'​accès à un fichier en pointant sur un nom de fichier. ​+  * **Lien symbolique** : permet d'​attribuer un autre chemin d'​accès à un fichier en pointant sur un nom de fichier.
  
-Voici le résultat obtenu en entrant la même commande **ls -i**+Voici le résultat obtenu en entrant la même commande **ls -i** :
    
 <​code>​ dupont@dupont-pc:​~$ ls -i ~/​fichiersource ~/​Bureau/​monliensymbolique ​ <​code>​ dupont@dupont-pc:​~$ ls -i ~/​fichiersource ~/​Bureau/​monliensymbolique ​
Ligne 50: Ligne 57:
 On voit que les deux fichiers pointent vers deux numéros d'​inode **différents**. On voit que les deux fichiers pointent vers deux numéros d'​inode **différents**.
  
-<note help>​Dans quels cas est-il plus judicieux d'​utiliser un lien symbolique plutôt qu'un lien physiqueet vice-versa ? +<note help>​Dans quels cas est-il plus judicieux d'​utiliser un lien symbolique plutôt qu'un lien physique et vice-versa ?
  
-Réponse partielle 1 : dans les environnements graphiques (Dolphin etc) on ne trouve pas l'​option pour créer de lien fixe ... et je le regrette parfois.+Réponse partielle 1 : dans les environnements graphiques (Dolphinetc.)on ne trouve pas l'​option pour créer de lien fixe ... et je le regrette parfois.
  
-Réponse partielle 2 : les liens symboliques permettent une meilleure maintenance de l'​espace disque. Avec des liens en dur partout, il deviendrait difficile de savoir si on a effectivement ​vraiment effacé un fichier du disque.+Réponse partielle 2 : les liens symboliques permettent une meilleure maintenance de l'​espace disque. Avec des liens en dur (physiques) ​partout, il deviendrait difficile de savoir si on a vraiment effacé un fichier du disque.
  
-Réponse partielle 3 : Dans le cas ou le lien doit pointer vers un autre système de fichiers (autre partition ou autre support de stockage) seul le lien symbolique est possible. ​+Réponse partielle 3 : dans le cas où le lien doit pointer vers un autre système de fichiers (autre partition ou autre support de stockage)seul le lien symbolique est possible.
  
-Réponse partielle 4 : Dans la gestion des sauvegardes,​ les liens symboliques ne sont généralement pas suivis, ce qui permet d'​éviter de sauvegarder les mêmes fichiers plusieurs fois. +Réponse partielle 4 : dans la gestion des sauvegardes,​ les liens symboliques ne sont généralement pas suivis, ce qui permet d'​éviter de sauvegarder les mêmes fichiers plusieurs fois.
  
-Réponse partielle 5 : Par contre, dans certains cas particulier, il faut passer par le lien physique pour que la sauvegarde fonctionne. Il faut alors passer par la console (ligne de commande ou "​mc"​ à installer et essayer). Exemple : je sauvegarde régulièrement "/​etc",​ mais quelques rares paquets demandent un peu de configuration dans "/​var/​lib..."​ je met alors des liens en dur dans un sous-répertoire ad-hoc de mon etc, pour que leur sauvegarde soit comprise avec.+Réponse partielle 5 : inversement, dans certains cas, il faut passer par le lien physique pour que la sauvegarde fonctionne. Il faut alors passer par la console (ligne de commande ou "​mc"​ à installer et essayer). Exemple : je sauvegarde régulièrement "/​etc",​ mais quelques rares paquets demandent un peu de configuration dans "/​var/​lib/..." ​je mets alors des liens en dur dans un sous-répertoire ad hoc de mon répertoire /etc, pour que la sauvegarde ​de ces paquets ​soit aussi assurée.
  
-Réponse partielle 6 : Le système de sauvegarde "​rsnapshot"​ utilise les liens physiques, et c'est vraiment bien, renseignez vous. Mais ici c'est géré par le script, ​ce n'est pas votre problème.+Réponse partielle 6 : le système de sauvegarde "​rsnapshot"​ utilise les liens physiques, et c'est vraiment bien, renseignez-vous. Mais dans ce cas, comme c'est géré par le script, ​vous n'avez pas à vous en préoccuper.
  
 </​note>​ </​note>​
Ligne 86: Ligne 93:
 lien symbolique : [lien_symb]-->? ​      ​[source_modif]-->​[secteur n du disque] lien symbolique : [lien_symb]-->? ​      ​[source_modif]-->​[secteur n du disque]
  
-<note important>​Malheureusement les liens symboliques ne sont pas mis à jour lorsque le fichier source est déplacé ou renommé. Il faut les recréer.</​note>​ +<note important>​Malheureusementles liens symboliques ne sont pas mis à jour lorsque le fichier source est déplacé ou renommé. Il faut les recréer.</​note>​ 
-===== Pré-requis ​pour l'​exemple =====+====== Prérequis ​pour l'​exemple ​======
  
 On montrera cela par un exemple simple : On montrera cela par un exemple simple :
  
-On crée un document texte (ici la liste des paquets installés) dans le home :+On crée un document texte (ici la liste des paquets installés) dans le répertoire ​home :
  
    dpkg -l>​source    dpkg -l>​source
Ligne 97: Ligne 104:
 ===== Exemple de lien physique ===== ===== Exemple de lien physique =====
  
-On crée un lien physique (que l'on nomme lien_dur)+On crée un lien physique (que l'on nomme lien_dur) ​:
    ln source lien_dur    ln source lien_dur
  
-Maintenant, on peut également lire le document source à partir de lien_dur+À présent, on peut également lire le document source à partir de lien_dur ​:
    gedit lien_dur    gedit lien_dur
  
Ligne 112: Ligne 119:
 ===== Exemple de lien symbolique ===== ===== Exemple de lien symbolique =====
  
-Le lien symbolique ​s'utilise ​également avec ln, en ajoutant toutefois l'​option -s. +Pour créer un lien symbolique, on utilise ​aussi la commande //ln//, en ajoutant toutefois l'​option -s.
  
-On crée un lien symbolique (que l'on nomme lien_symb) +On crée un lien symbolique (que l'on nomme ici //lien_symb//: 
-   ​ln -s source lien_symb+<code bash>ln -s source lien_symb</​code>​
  
-On pourra toujours lire source depuis lien_symb +On pourra toujours lire //source// depuis ​//lien_symb// : 
-   ​gedit lien_symb+<code bash>gedit lien_symb</​code>​
  
-Mais à la différence du lien physique, après la destruction de source, le fichier ne sera plus accessible !+À la différence du lien physique, après la destruction ​ou même simplement le renommage ​de source, le fichier ne sera plus accessible ! 
 +<code bash>
    rm source    rm source
    gedit lien_symb    gedit lien_symb
 +</​code>​
  
-On peut déceler ​les liens symboliques avec ls -F, ils apparaissent avec un @ à la fin. +On peut repérer ​les liens symboliques avec ls -F, ils apparaissent avec un @ à la fin.
    ls -F    ls -F
  
 +Pour modifier le propriétaire ou/et le groupe d'un lien symbolique, il faut utiliser l'​option //-h//, sinon c'est les propriétés de la cible qu'on change et non celle du lien (le sudo n'est pas indispensable,​ si on a les droits évidemment) :
 +<code bash>
 +sudo chown -h nom_utilisateur_proprio:​nom_groupe lien_symb
 +sudo chgrp -h nom_groupe lien_symb
 +</​code>​
 ===== Autres documentations disponibles ===== ===== Autres documentations disponibles =====
   * [[http://​wiki.linux-france.org/​wiki/​Les_commandes_fondamentales_de_Linux | Explication sur linux-france.org]] *   * [[http://​wiki.linux-france.org/​wiki/​Les_commandes_fondamentales_de_Linux | Explication sur linux-france.org]] *
 +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22433798#​p22433798 | Script corrigeant en masse les conséquences d'un renommage de dossier qui casse les liens symboliques dirigeant vers lui, ses sous-répertoires et fichiers]]. par MicP
  
 ===== En dual-boot Windows ===== ===== En dual-boot Windows =====
-Sur un ordinateur en dual-boot avec Windows, il peut être intéressant de savoir quels liens symboliques ou physiques fonctionnent,​ puisque depuis Windows 7, en plus des traditionnels raccourcis, Windows offre aussi la possibilité de faire des liens (cette possibilité existait auparavant avec l'​utilitaire //​junction//​ ). +Sur un ordinateur en double amorçage (dual-bootavec Windows, il peut être intéressant de savoir quels liens symboliques ou physiques fonctionnent,​ puisque depuis Windows 7, outre les traditionnels raccourcis, Windows offre la possibilité de créer ​des liens (cette possibilité existait auparavant avec l'​utilitaire //​junction//​ ). 
-Bien sûr, comme Windows ne peut pas lire les partitions ext4 et antérieures,​ tout lien impliquant une partition de type ext ne pourra pas être compris par Windows de manière native (à voir si cela fonctionne avec les drivers permettant de monter des partitions ext sur Windows).+Bien sûr, comme MS Windows ne peut pas lire les partitions ext4 et antérieures,​ tout lien impliquant une partition de type ext ne pourra pas être compris par Windows de manière native (à voir si cela fonctionne avec les drivers permettant de monter des partitions ext sur Windows).
  
-Par contre, Linux lit nativement les partitions NTFS, donc Linux comme Windows peuvent créer des liens sur des partitions NTFS.+Par contre, Linux lit nativement les partitions NTFS, donc tant Linux que Windows peuvent créer des liens sur des partitions NTFS.
 Empiriquement (d'​après tests sous Windows 7 et Linux Mint 17.3), on remarque que : Empiriquement (d'​après tests sous Windows 7 et Linux Mint 17.3), on remarque que :
-  * Aucun lien symbolique créé sous Linux n'est compris sous Windows +  * aucun lien symbolique créé sous Linux n'est compris sous Windows ​; 
-  * Les liens symboliques créés sous Windows (commande //MkLink /D//) fonctionnent sous Linux si la cible et le lien sont sur la même partition NTFS, mais pas s'ils sont sur des partitions différentes.+  * les liens symboliques créés sous Windows (commande //MkLink /D//) fonctionnent sous Linux si la cible et le lien sont sur la même partition NTFS, mais pas s'ils sont sur des partitions différentes.
 ---- ----
  
 //​Contributeurs : à partir des documents cités, [[utilisateurs:​Matifou]],​ pour l'​explication graphique : [[utilisateurs:​mohican]] // //​Contributeurs : à partir des documents cités, [[utilisateurs:​Matifou]],​ pour l'​explication graphique : [[utilisateurs:​mohican]] //
  • lien_physique_et_symbolique.1552323776.txt.gz
  • Dernière modification: Le 11/03/2019, 18:02
  • par L'Africain