Maison > Tutoriel système > Linux > Exemples pour expliquer la création de liens physiques et de liens logiciels dans les systèmes Linux

Exemples pour expliquer la création de liens physiques et de liens logiciels dans les systèmes Linux

PHPz
Libérer: 2024-02-12 12:48:27
avant
738 Les gens l'ont consulté

Les liens Linux sont divisés en deux types, l’un est appelé lien physique et l’autre est appelé lien symbolique. Par défaut, la commande ln génère des liens physiques. La différence entre les liens physiques et les liens logiciels commence fondamentalement par le nœud inode. Voici des exemples de création de liens physiques et de liens symboliques dans les systèmes Linux pour voir les différences entre les deux types de liens sous Linux.

Exemples pour expliquer la création de liens physiques et de liens logiciels dans les systèmes Linux

Tout d'abord, il faut comprendre que dans le système Linux, le noyau alloue un Inode (nœud d'index) à chaque fichier nouvellement créé, et chaque fichier a un numéro d'inode unique. Les attributs du fichier sont stockés dans le nœud d'index lors de l'accès au fichier, le nœud d'index est copié dans la mémoire, permettant ainsi un accès rapide au fichier.

Les liens sont une méthode permettant d'établir une connexion entre un fichier partagé et plusieurs entrées du répertoire de l'utilisateur qui y accède. Linux comprend deux types de liens : Hard Link et Soft Link est également appelé lien symbolique.

Lien dur

Pour parler franchement, un lien physique est un pointeur pointant vers le nœud d'index de fichier, et le système ne lui réaffecte pas l'inode. Vous pouvez utiliser la commande :ln pour créer un lien physique. Grammaire :

ln [options] existingfile newfile
ln[options] existingfile-list directory
Copier après la connexion

Utilisation : La première : Créez un lien physique pour "existingfile" et le nom du fichier est "newfile". Deuxièmement : dans le répertoire "directory", créez un lien physique avec le même nom pour tous les fichiers contenus dans "existingfile-list". Les [options] -f facultatives couramment utilisées créent un lien, que le "nouveau fichier" existe ou non. -n Si "newfile" existe déjà, aucun lien ne sera créé. L'exemple est le suivant :

$ ls –il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2
$ ln file2 file2hard
$ ls –il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
Copier après la connexion

Remarque :
Avant de créer le lien, le nombre de liens affichés dans le fichier1 est de 1
Après avoir créé le lien, (1) le nombre de liens pour file1 et file1hard devient 2 ; (2) les numéros d'inode de file1 et file1hard sont les mêmes (3) les tailles de fichier affichées par file1 et file1hard sont également les mêmes ;
On peut voir que le résultat de l'opération de la commande ln est : file1 et file1hard sont deux noms du même fichier. Ils ont le même numéro de nœud d'index et les mêmes attributs de fichier. La création d'un lien physique vers le fichier file1 signifie que le nœud d'index de fichier est. file1 est dans le répertoire actuel. Créez un nouveau pointeur.

Exemples pour expliquer la création de liens physiques et de liens logiciels dans les systèmes Linux

Le nombre de liens est réduit d'un en même temps. Ce n'est que lorsque tous les pointeurs pointant vers le contenu du fichier, c'est-à-dire que le nombre de liens est réduit à 0, que le noyau supprimera le contenu du fichier du disque. La structure logique du répertoire actuel : (Désolé, l'image n'est pas affichée).

Vous pouvez également créer des liens physiques vers des fichiers situés dans des répertoires différents mais dans le même système de fichiers. Supposons que file1 et file2 se trouvent dans le répertoire /home/longcheng/dir1. La commande suivante crée un lien physique vers file2 dans /home/longcheng.

ln file2 /home/longcheng/file2hard
Copier après la connexion

Le programme suivant consiste à créer des liens physiques pour tous les fichiers du répertoire dir1 dans le répertoire dir2

$mkdir dir2
$ln /home/longcheng/dir1/* /home/longcheng/dir2
Copier après la connexion

Si ln -f existantfile newfile est utilisé, si newfile existe déjà, quel que soit le fichier newfile, seul l'utilisateur actuel a l'autorisation d'écriture sur celui-ci, et newfile deviendra un fichier de lien physique de exitngfile.

Bien que les liens physiques permettent d'économiser de l'espace et constituent le moyen traditionnel d'intégrer les systèmes de fichiers dans les systèmes Linux, il existe quelques inconvénients :
(1) Les liens ne peuvent pas être établis entre des fichiers dans différents systèmes de fichiers
(2) Seuls les super utilisateurs peuvent créer des liens physiques pour les répertoires. Bien que de nombreux arbres disent que les utilisateurs root peuvent créer, l'auteur a découvert au cours du processus d'apprentissage que même les utilisateurs root ne peuvent pas créer. Mon système est Redhat et j'ai essayé les noyaux 2.4 et 2.6. Je ne sais pas si c'est possible sur d'autres systèmes. .

Lien logiciel (lien symbolique)

Les liens logiciels pallient aux défauts des liens physiques et n'ont aucune restriction sur le système de fichiers. Tout utilisateur peut créer un lien symbolique pointant vers un répertoire. En conséquence, il est désormais plus largement utilisé, offre une plus grande flexibilité et peut même relier des fichiers sur différentes machines et différents réseaux.

Pour créer un lien symbolique, ajoutez simplement l'option -s après ln. L'exemple est le suivant :

$ ls -il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
$ln –s file1 file1soft
$ls -il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1
Copier après la connexion
Exemples pour expliquer la création de liens physiques et de liens logiciels dans les systèmes Linux

D'après les résultats des liens ci-dessus, nous pouvons voir que la différence entre les liens logiciels et les liens physiques n'est pas seulement dans le concept, mais aussi dans la mise en œuvre.

Différence :
Le fichier d'origine du lien physique et le fichier lié partagent un numéro d'inode commun, indiquant qu'il s'agit du même fichier, tandis que le fichier d'origine du lien symbolique et le fichier lié ont des numéros d'inode différents, indiquant qu'il s'agit de deux fichiers différents.
Dans les attributs du fichier, le lien symbolique indique clairement qu'il s'agit d'un fichier lien, mais pas le lien physique, car, par essence, le fichier de lien physique et le fichier d'origine ont une relation complètement égale.
Le nombre de liens est différent et le nombre de liens symboliques n'augmentera pas ; la taille du fichier est différente et la taille affichée par le fichier de lien physique est la même que celle du fichier d'origine.

En bref, créer un lien symbolique, c'est créer un nouveau fichier. Lorsqu'un fichier lié est accédé, le système découvrira qu'il s'agit d'un fichier lié et lira le fichier lié pour trouver le fichier auquel il faut réellement accéder. Bien entendu, les liens symboliques présentent également des inconvénients que les liens physiques n'ont pas, car le fichier de lien contient les informations de chemin du fichier d'origine. Ainsi, lorsque le fichier d'origine est déplacé d'un répertoire à un autre et que le fichier de lien est à nouveau accessible, le le système ne pourra pas le trouver, alors que le lien physique le fera. Sans ce défaut, vous pouvez le déplacer comme vous le souhaitez ; cela nécessite également que le système alloue de l'espace supplémentaire pour créer de nouveaux nœuds d'index et enregistrer le chemin du fichier d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:lxlinux.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal