10 mai, 2017 – 5 min lu

Bonjour à nouveau. Dans cette introduction aux liens durs et aux liens symboliques, nous allons d’abord essayer d’apprendre et de définir ce que chacun signifie. Ensuite, nous discuterons des différences entre les deux.

Alors, qu’est-ce qu’un lien dur et que fait-il exactement dans le shell ?

Un lien dur est simplement un nom supplémentaire pour un fichier existant sur Linux ou d’autres systèmes d’exploitation de type Unix.

Un nombre quelconque de liens durs, et donc un nombre quelconque de noms, peut être créé pour n’importe quel fichier. Les liens durs peuvent également être créés vers d’autres liens durs. Cependant, ils ne peuvent pas être créés pour des répertoires, et ils ne peuvent pas traverser les frontières du système de fichiers ou s’étendre sur des partitions.

Peut-être que l’application la plus utile des liens durs est de permettre aux fichiers, aux programmes et aux scripts (c’est-à-dire les programmes courts) d’être facilement accessibles dans un répertoire différent du fichier original ou du fichier exécutable (c’est-à-dire la version prête à être exécutée d’un programme). En tapant le nom du lien dur, le programme ou le script sera exécuté de la même manière qu’en utilisant son nom original. (http://www.linfo.org/hard_link.html)

Vous voulez lire cette histoire plus tard ? Enregistrez-la dans Journal.

Alors, que signifie réellement cette définition ? Eh bien, vous pouvez créer un lien dur vers un fichier existant en utilisant la commande ln nom_fichier lien dur. J’ai fourni un exemple ci-dessous de la création d’un lien dur en action. Dans l’exemple ci-dessous, j’ai créé un hardlink aka un raccourci vers le fichier nommé file1 avec le hardlink nommé hlink1.

Now lets ls -i. Pour qu’il liste tous les fichiers avec inode.

INODE Définition : L’inode est une structure de données dans un système de fichiers de style Unix qui décrit un objet du système de fichiers tel qu’un fichier ou un répertoire. Chaque inode stocke les attributs et l’emplacement du ou des blocs de disque des données de l’objet. Les attributs des objets du système de fichiers peuvent inclure des métadonnées (heures du dernier changement, accès, modification), ainsi que des données sur le propriétaire et les autorisations.

Les répertoires sont des listes de noms attribués aux inodes. Un répertoire contient une entrée pour lui-même, son parent, et chacun de ses enfants. (https://en.wikipedia.org/wiki/Inode)

Si vous regardez le fichier1 et le hlink1, vous pouvez voir que l’inode du côté gauche est le même. En substance, les hardlinks agissent comme un raccourci vers ce fichier qui est lié en dur.

Passons maintenant aux « Soft Links »

Les soft links sont un type spécial de fichier qui pointe vers un autre fichier, un peu comme un raccourci. Contrairement à un lien dur, un lien symbolique ne contient pas les données du fichier cible. Il pointe simplement vers une autre entrée quelque part dans le système de fichiers. Cette différence confère aux liens symboliques certaines qualités que les liens durs n’ont pas, comme la possibilité de créer des liens vers des répertoires ou des fichiers sur des ordinateurs distants mis en réseau par NFS. De plus, lorsque vous supprimez un fichier cible, les liens symboliques vers ce fichier deviennent inutilisables, alors que les liens durs préservent le contenu du fichier. (https://kb.iu.edu/d/abbe)

Maintenant, créons un lien souple pour le comparer au lien dur que nous avons créé ci-dessus.

Ouvrons donc un terminal. Allez dans le finder ou la recherche et entrez terminal il devrait apparaître cliquez dessus et ouvrez.

Pour notre exemple créons d’abord un fichier. Si on tape touch example1 et qu’on appuie sur entrée. Nous pouvons créer un fichier. Maintenant pour créer le lien logiciel.

Si nous tapons dans le shell ln -s example1 softlink1 nous créons un lien logiciel entre les fichiers. Voir l’exemple ci-dessous.

softlink

Maintenant si nous devions taper ls -i nous remarquerons également que seul le fichier hardlink a le même inode que le hardlink alors que le fichier soft link a des inodes différents.

Quelles sont les différences entre les liens durs et les liens souples?

Un lien souple ne contient pas les données du fichier cible.

Un lien souple pointe vers une autre entrée quelque part dans le système de fichiers.

Un lien souple a la capacité de se lier à des répertoires, ou à des fichiers sur des ordinateurs distants mis en réseau par NFS.

La suppression d’un fichier cible pour un lien symbolique rend ce lien inutile.

Un lien dur préserve le contenu du fichier.

Un lien dur ne peut pas être créé pour des répertoires, et ils ne peuvent pas traverser les frontières du système de fichiers ou s’étendre sur des partitions.

Dans un lien dur, vous pouvez utiliser n’importe lequel des noms de lien dur créés pour exécuter un programme ou un script de la même manière que le nom original donné.

En substance :

« Sous le système de fichiers, les fichiers sont représentés par des inodes

Un fichier dans le système de fichiers est fondamentalement un lien vers un inode.
Un lien dur crée alors juste un autre fichier avec un lien vers le même inode sous-jacent.

Lorsque vous supprimez un fichier, cela supprime un lien vers l’inode sous-jacent. L’inode n’est supprimé (ou supprimable/sur-écrivable) que lorsque tous les liens vers l’inode ont été supprimés.

Un lien symbolique est un lien vers un autre nom dans le système de fichiers.

Une fois qu’un lien dur a été fait, le lien est vers l’inode. supprimer renommer ou déplacer le fichier d’origine n’affectera pas le lien dur car il est lié à l’inode sous-jacent. Toute modification des données sur l’inode est reflétée dans tous les fichiers qui font référence à cet inode.

Remarque : les liens durs ne sont valables que dans le même système de fichiers. Les liens symboliques peuvent s’étendre sur plusieurs systèmes de fichiers car ils sont simplement le nom d’un autre fichier. »

(http://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link)

Examen du shell et de la façon dont il exécute une commande

  • Le shell lit son entrée à partir d’un fichier, d’une chaîne de caractères ou du terminal de l’utilisateur.
  • L’entrée est décomposée en mots et opérateurs, obéissant aux règles de citation. Ces tokens sont séparés par des métacaractères. L’expansion des alias est effectuée.
  • Le shell analyse (analyse et substitue) les tokens en commandes simples et composées.
  • Le shell effectue diverses expansions du shell, décomposant les tokens étendus en listes de noms de fichiers et de commandes et arguments.
  • La redirection est effectuée si nécessaire, les opérateurs de redirection et leurs opérandes sont retirés de la liste des arguments.
  • Les commandes sont exécutées.
  • Optionnellement, l’interpréteur de commandes attend que la commande se termine et recueille son état de sortie.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.