Il existe deux types de liens qui permettent de rediriger un fichier vers un autre : les liens physiques et les liens symboliques.
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.
Un lien symbolique est en fait un fichier qui pointe vers un autre fichier ; un lien matériel est quant à lui 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 ; avec les liens symboliques, si vous supprimez le fichier cible, ils pointeront alors 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.
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:
dupont@dupont-pc:~$ ls -i ~/fichiersource ~/Bureau/monlienphysique 5954521 ~/fichiersource 5954521 ~/Bureau/monlienphysique
Comme dit plus haut, les différents liens physiques pointent vers un même numéro d'index.
Voici le résultat obtenu en entrant la même commande ls -i
dupont@dupont-pc:~$ ls -i ~/fichiersource ~/Bureau/monliensymbolique 5954521 ~/fichiersource 6876911 ~/Bureau/monliensymbolique
On voit que les deux fichiers pointent vers deux numéros d'inode différents.
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 2 : les liens symboliques permettent une meilleure maintenance de l'espace disque. Avec des liens en dur partout, il deviendrais difficile de savoir si on a effectivement 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 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 en dur 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 config dans “/var/lib…” je met alors des liens en dur dans un sousrépertoire ad-hoc de mon etc, pour que leur sauvegarde soit comprise avec.
Réponse partielle 6 : Le système de sauvegarde “rsnapshot” utilise les liens en dur, et c'est vraiment bien, renseignez vous. Mais ici c'est géré par le script, c'est pas votre problème.
fichier source : [source]–>[secteur n du disque]
lien physique/dur : [source]–>[secteur n du disque]←- [lien_dur]
lien symbolique : [lien_symb]–>[source]–>[secteur n du disque]
lien physique/dur : [lien_dur]–>[secteur n du disque]
lien symbolique : [lien_symb]–>?
lien physique/dur : [source_modif]–>[secteur n du disque]←- [lien_dur]
lien symbolique : [lien_symb]–>? [source_modif]–>[secteur n du disque]
On montrera cela par un exemple simple :
On crée un document texte (ici la liste des paquets installés) dans le home :
dpkg -l>source
On crée un lien physique (que l'on nomme lien_dur)
ln source lien_dur
Maintenant, on peut également lire le document source à partir de lien_dur
gedit lien_dur
Il est possible de connaître le nombre de liens qui amènent au même fichier :
ls -l source ls -l lien_dur
Si on souhaite effacer le fichier source, le document existera toujours :
rm source gedit lien_dur
Le lien symbolique s'utilise également avec ln, en ajoutant toutefois l'option -s.
On crée un lien symbolique (que l'on nomme lien_symb)
dpkg -l>source ln -s source lien_symb
On pourra toujours lire source depuis lien_symb
gedit lien_symb
Mais à la différence du lien physique, après la destruction de source, le fichier ne sera plus accessible !
rm source gedit lien_symb
On peut déceler les liens symboliques avec ls -F, ils apparaissent avec un @ à la fin.
ls -F