L'explication la plus simple serait que "quelque part" le fichier de la photo soit dupliqué, et donc que je ne gagne rien en place mémoire par rapport à une copie.
Non, en quelque sorte tout fichier est déjà un lien dur vers ses données, c’est-à-dire un inode qui pointe dessus.
Si tu crées un lien dur avec ln (sans l’option -s) ou cp -l, c’est juste un deuxième inode, tout-à-fait similaire au premier, qui pointe vers les mêmes données.
Dans la commande ln, tu indiques un fichier (donc un inode) comme source du lien dur, mais en fait le système va voir où sont les données et crée un nouvel inode qui pointe directement dessus (cp -l fonctionne sur le même principe, mais avec des possibilités supplémentaires comme de descendre dans les sous-répertoires).
Ce serait mieux avec un schéma (quand j’ai eu l’explication il y a longtemps, j’ai eu droit à un schéma), mais je ne me sens pas trop de faire de l’ASCII art... Imagine des petits carrés identiques (les inodes) avec chacun une flèche qui partent des carrés et vont vers le même grand rectangle (les données). Quand tu crées ton fichier, tu as un petit carré et une flèche ; à chaque fois que tu fais un lien dur, tu ajoutes un petit carré avec une nouvelle flèche pointant directement vers le rectangle des données, comme celle du premier petit carré.
Quand tu fais un ls -l, le nombre que tu vois avant le nom du propriétaire du fichier, c’est le nombre d’inodes qui pointent sur ses données (de flèches qui pointent le grand rectangle).
En général, pour un fichier, c’est 1... sauf si tu as utilisé ln ou cp -l pour faire un voire plusieurs liens durs.
Quand tu supprimes un fichier, que ce soit le fichier d’origine ou un lien dur créé avec ln ou cp -l, le système supprime son inode (le petit carré et la flèche) et décrémente leur nombre pour les données pointées. Seulement si ce nombre arrive à 0 (plus aucune flèche vers le grand rectangle), les données sont supprimées. Que ce soit l’inode d’origine ou pas n’a pas d’influence sur le traitement effectué.
À noter toutefois que les liens durs ne sont possibles que dans une même partition : un inode ne peut pas pointer vers des données situées dans une autre partition.
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
[^] # Re: Liens durs
Posté par Arthur Accroc . En réponse au message création liens symboliques impossible. Évalué à 4.
Non, en quelque sorte tout fichier est déjà un lien dur vers ses données, c’est-à-dire un inode qui pointe dessus.
Si tu crées un lien dur avec
ln(sans l’option-s) oucp -l, c’est juste un deuxième inode, tout-à-fait similaire au premier, qui pointe vers les mêmes données.Dans la commande
ln, tu indiques un fichier (donc un inode) comme source du lien dur, mais en fait le système va voir où sont les données et crée un nouvel inode qui pointe directement dessus (cp -lfonctionne sur le même principe, mais avec des possibilités supplémentaires comme de descendre dans les sous-répertoires).Ce serait mieux avec un schéma (quand j’ai eu l’explication il y a longtemps, j’ai eu droit à un schéma), mais je ne me sens pas trop de faire de l’ASCII art... Imagine des petits carrés identiques (les inodes) avec chacun une flèche qui partent des carrés et vont vers le même grand rectangle (les données). Quand tu crées ton fichier, tu as un petit carré et une flèche ; à chaque fois que tu fais un lien dur, tu ajoutes un petit carré avec une nouvelle flèche pointant directement vers le rectangle des données, comme celle du premier petit carré.
Quand tu fais un
ls -l, le nombre que tu vois avant le nom du propriétaire du fichier, c’est le nombre d’inodes qui pointent sur ses données (de flèches qui pointent le grand rectangle).En général, pour un fichier, c’est 1... sauf si tu as utilisé
lnoucp -lpour faire un voire plusieurs liens durs.Quand tu supprimes un fichier, que ce soit le fichier d’origine ou un lien dur créé avec
lnoucp -l, le système supprime son inode (le petit carré et la flèche) et décrémente leur nombre pour les données pointées. Seulement si ce nombre arrive à 0 (plus aucune flèche vers le grand rectangle), les données sont supprimées. Que ce soit l’inode d’origine ou pas n’a pas d’influence sur le traitement effectué.À noter toutefois que les liens durs ne sont possibles que dans une même partition : un inode ne peut pas pointer vers des données situées dans une autre partition.
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone