|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
J'ai enfin décidé à me mettre à Linux. Cependant, je butte sur le concept d'Inode. J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, les liens physiques et symboliques. Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la réelle différence entre physique et symbolique, pour moi (pour l'instant) un lien n'est rien d'autre qu'un raccourci (windows). Pouvez-vous m'éclairer s'il vous plaît? (j'ai l'impression que windows habitues ses utilisateurs à beaucoup trop de simplicité...) Merci. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 24-01-2007, november <dragonrb@free.fr> a écrit:
> J'ai enfin décidé à me mettre à Linux. Cependant, je butte sur le concept > d'Inode. Est-il bien utile ? > J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, les > liens physiques et symboliques. > > Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la > réelle différence entre physique et symbolique, pour moi (pour l'instant) un > lien n'est rien d'autre qu'un raccourci (windows). Lien symbolique win/linux: Ben, un lien symbolique est comme un raccourci Windows, mais au niveau du système de fichier, car dans mon souvenir, en windows, un raccourci n'est qu'un fichier .lk qui contient le nom d'un autre fichier. Résultat, si tu ouvres le fichier depuis un programme (fopen en C), tu lis le nom du fichier ciblé, alors qu'en Linux (et les Unix), tu ouvres vraiment le fichier. Lien symbolique / physique Si tu as un fichier toto.txt, et que tu fait un lien symbolique titi.txt sur toto.txt, et que tu effaces toto.txt, ben, titi.txt ne désigne plus rien. A contrario, si tu as un fichier toto.txt et un lien physique titi.txt sur toto.txt, et que tu effaces toto.txt, ben, le fichier est toujours là, accessible depuis le nom titi.txt. Marc -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois) |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
"november" :
> J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, les > liens physiques et symboliques. > > Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la > réelle différence entre physique et symbolique, pour moi (pour l'instant) un > lien n'est rien d'autre qu'un raccourci (windows). Un inode, c'est en gros un fichier: un enregistrement contenant - des propriétés (propriétaires, droits d'accès, diverses dates) - un type (fichier normal, répertoire, lien symbolique, device, pipe, socket, ...) - optionellement un flux d'octets. Un répertoire, c'est un inode qui a le type répertoire. Son flux d'octets contient, dans un certain codage, une liste de couples (nom, numéro d'inode). Un tel couple (s,y) constitue un lien dur de nom s vers l'inode y. Ce flux d'octets n'est pas manipulable directement par les programmes, ils y accèdent à plus haut niveau: en demandant à l'OS la liste des noms des liens, ou d'ouvrir l'inode du lien portant un certain nom. Un fichier, c'est un inode qui a le type fichier. Son flux d'octets peut être lu et modifié directement par les programmes. Un lien symbolique, c'est un inode qui a le type lien symbolique. Son flux d'octets peut être lu par les programmes mais pas modifié (il est fixé lors de sa création). En pratique, ce flux d'octets est interprété comme un chemin d'accès: quand on essaye d'ouvrir un lien symbolique, c'est en fait le fichier pointé par le chemin d'accès contenu dedans qui va se faire ouvrir. Bref: - lien dur = entrée d'un nom de fichier dans un répertoire - lien symbolique ~ racourci. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
"november" <dragonrb@free.fr> écrit :
> Bonjour, Hello, > J'ai enfin décidé à me mettre à Linux. Cependant, je butte sur le concept > d'Inode. C'est pas forcément très compliqué. > J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, les > liens physiques et symboliques. Oui ? > Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la > réelle différence entre physique et symbolique, pour moi (pour l'instant) un > lien n'est rien d'autre qu'un raccourci (windows). N'essayez pas de faire un parallèle entre Windows et Unix, des concepts apparemment identiques cachent des choses fort différentes. > Pouvez-vous m'éclairer s'il vous plaît? (j'ai l'impression que windows > habitues ses utilisateurs à beaucoup trop de simplicité...) Un inode est grosso-modo un fichier. Ce fichier est stocké qqpart (où n'a pas d'importance). Pour y accéder il faut connaître son numéro d'inode. D'un autre côté, un peu à part, il y a une hiérarchie de répertoires. Un répertoire est simplement une association entre un nom et un inode. Le nom permet simplement d'y accéder plus facilement. Quand on fait référence à un inode, on incrémente son compteur de liens (en fait on fait un lien entre le répertoire et l'inode). Quand on enlève un fichier d'un répertoire, on décrémente le nombre de liens. Lorsque ce nombre devient 0, l'inode n'est plus accessible, le fichier est supprimé. Donc, faire un lien consiste à attacher un inode dans un répertoire. On peut créer autant de liens qu'on veut vers une inode (c'est un lien physique, ou hard). On a plusieurs entrées vers le même fichier. Par exemple : Je crée un fichier : > echo "aaa" > a.txt On vérifie qu'il existe : > ls -i a.txt 3958120 a.txt L'option -i de ls permet d'afficher le numéro d'inode. Le fichier a.txt est en fait l'inode 3958120. On fait un lien hard de a.txt vers b.txt : > ln a.txt b.txt > ls -i a.txt b.txt 3958120 a.txt 3958120 b.txt On remarque que les deux fichiers ont le même inode, ce sont dont deux entrées dans le répertoire vers un et un seul fichier. Donc quand on en modifie un, on modifie le second (ben oui, c'est le même fichier !) : > echo "bbb" >> b.txt > cat a.txt aaa bbb Il y a une limitation aux inodes : leur numéro est local à une partition. Et donc on ne peut faire un lien hard que sur une seule partition. Mais il existe les liens softs. Un lien soft n'est pas un lien hard. C'est tout simplement un nouvel inode qui contient le chemin d'un autre fichier. Par exemple, on crée un lien soft de c vers a : > ln -s a.txt c.txt > ls -li a.txt c.txt 3958120 -rw-r--r-- 2 dust users 8 24 jan 13:42 a.txt 3957863 lrwxr-xr-x 1 dust users 5 24 jan 13:43 c.txt -> a.txt Les deux fichiers n'ont pas la même inode. Et le système se débrouille pour que quand on accède à c, en fait on accède à a : > echo "ccc" >> c.txt > cat a.txt aaa bbb ccc Le pb de ce machin, c'est si on déplace a : > mv a.txt d.txt > ls -la c.txt lrwxr-xr-x 1 dust users 5 24 jan 13:43 c.txt -> a.txt (donc c.txt existe !) > cat c.txt cat: c.txt: No such file or directory C'est exactement comme pour les liens Windows, dans le fonctionnement. En résumé : un inode est un fichier stocké dans une structure que l'on ne voit pas (et qui est la table d'inode). La structure des répertoires est un système permettant de nommer un inode, et de le retrouver/manipuler plus facilement. Un lien physique permet de nommer de différentes façon un inode, et/ou de le mettre dans plusieurs répertoires. Un lien symbolique crée un autre inode qui permet de pointer sur une entrée de répertoire. > Merci. Ah mais de rien ! En espérant vous avoir aidé. Si vous avez d'autres questions.... |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Merci pour vos réponses (très rapides) !
![]() Pour l'instant, non je n'ai pas d'autres questions, je vais tester cela en pratique et continuer à apprendre le monde UNIX-Linux. Si j'ai d'autres questions essentielles je me permettrai de les poserici-même. Au fait, je débute en ligne de commandes sous Debian. "november" <dragonrb@free.fr> a écrit dans le message de news: 45b751f8$0$23666$426a34cc@news.free.fr... > Bonjour, > > J'ai enfin décidé à me mettre à Linux. Cependant, je butte sur le concept > d'Inode. > > J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, > les liens physiques et symboliques. > > Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la > réelle différence entre physique et symbolique, pour moi (pour l'instant) > un lien n'est rien d'autre qu'un raccourci (windows). > > Pouvez-vous m'éclairer s'il vous plaît? (j'ai l'impression que windows > habitues ses utilisateurs à beaucoup trop de simplicité...) > > Merci. > |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
"november" <dragonrb@free.fr> writes:
> Bonjour, > > J'ai enfin décidé à me mettre à Linux. Cependant, je butte sur le concept > d'Inode. Ça n'est pas très important pour un débutant. > J'ai déjà consulté pas mal de pages sur internet concernant les Inodes, les > liens physiques et symboliques. > > Venant du monde Windows, en fait, je n'arrive pas du tout à comprendre la > réelle différence entre physique et symbolique, pour moi (pour l'instant) un > lien n'est rien d'autre qu'un raccourci (windows). Sous windows, les «raccourcis» sont un vilain hack de l'interface graphique. Quand tu double-cliques sur un raccourcis, c'est comme si tu cliquais sur la cible. Mais depuis une console MS-DOS, si tu fais «notepad mon_raccourcis.lnk» (je suis plus sûr de l'extension, je crois que c'est lnk), tu verras que c'est un fichier comme un autre du point de vue de système. Sous Linux, ce qui s'en rapproche le plus, c'est le lien symbolique. Si un lien symbolique pointe vers un fichier, et qu'une application quelconque essaye d'ouvrir ce lien symbolique, les opérations qu'elle fera dessus se feront sur la cible. Si tu effaces la cible, le lien existe toujours, mais ne pointe plus sur rien, on ne peut plus l'utiliser. Les liens physiques, c'est un peu plus difficile à comprendre. Un fichier, c'est un ensemble de données stoquées sur le disque, et pour qu'on puisse y accéder, on lui donne un nom (on «accroche» une étiquette avec son nom au répertoire dans lequel il se trouve). En général, un fichier n'a qu'un seul nom, mais sous Unix, on peut avoir plusieurs noms pour le même fichier. Dans ce cas, les différents noms sont des liens en dur (physiques) sur le fichier. Concrêtement, on a l'impression d'avoir la même chose qu'avec un lien symblique, (deux choses qui représentent le même fichier), mais la grosse différence, c'est que si tu en effaces un, l'autre reste. Le fichier n'est vraiment effacé que lorsque plus personne n'y fait référence. Et dans tout ça, un Inode, c'est ce que j'appelle plus haut «fichier», c'est en fait un ensemble de données (le contenu du fichier) et de méta-données (comment ces données sont organisées sur le disque, ...). Des liens en dur, c'est plusieurs noms pour le même inode. Tu peux connaitre le numéro d'Inode avec «ls -i». -- Matthieu |
|
![]() |
| Outils de la discussion | |
|
|