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édentesRévision précédente
Prochaine révision
Révision précédente
lien_physique_et_symbolique [Le 03/06/2020, 10:53] – polobuntulien_physique_et_symbolique [Le 24/08/2025, 14:36] (Version actuelle) – [Autres documentations disponibles] suppr lien mort bcag2
Ligne 8: Ligne 8:
 I. Lien symbolique entre répertoires I. Lien symbolique entre répertoires
  
-De 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 atterrissions 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.
Ligne 14: Ligne 15:
 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 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.
  
-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 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.
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 physique et 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 (Dolphin, etc.), on ne trouve pas l'option pour créer de lien fixe ... et je le regrette parfois.
Ligne 56: Ligne 63:
 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 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 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 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 : 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 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.
Ligne 87: Ligne 94:
  
 <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>Malheureusement, les 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 :
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
  
-À présent, 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 =====
  
-Pour créer un lien symbolique, on utilise aussi la commande 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 ici 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>
  
-À 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 repérer 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>
 +
 +Il est possible de remplacer un lien symbolique existant :
 +<code bash>
 +# !! assurez-vous au préalable qu'il s'agit bien d'un lien symbolique (cf. ls -F ou ls -i expliqué plus haut) !!
 +ln -sfn source lien_symb
 +# exemple, basculer sendmail vers msmtp
 +cd /usr/sbin
 +ln -sfn /usr/bin/msmtp sendmail
 +</code>
 ===== Autres documentations disponibles ===== ===== Autres documentations disponibles =====
-  * [[http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux | Explication sur linux-france.org]] *+  * [[https://fr.linux-console.net/?p=20092]] 
 +  * [[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 =====