logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-01-2017 15:29:30

Patrick Debian
Membre
Distrib. : Debian Buster main_contrib_non-free_backpor
(G)UI : Gnome
Inscription : 14-12-2016

mv supprime le n° d'inode? [résolu]

Bonjour,
Je suis en train de lire le wiki de mv, "mouve", afin de bouger un fichier ou répertoire ou de renommer un des deux, renommer qui n'est rien d'autre que de le bouger là où il est vers là où il est avec un nouveau nom. Ben oui, quand on peut faire compliquer, pourquoi s'en priver?

Mon problème linusien ici concerne l'inode :
1- Quand on déplace un fichier ou répertoire vers un autre endroit et bien sûr sans le renommer, garde t'il le même numéro d'inode (que j'appellerais son numéro d'identité) ?

2- Si on le renomme simplement (simplement, ici, est relatif), garde t'il son n° d'inode ?

Merci
http://debian-facile.org/doc:systeme:mv

Dernière modification par Patrick Debian (12-01-2017 07:45:01)

Hors ligne

#2 11-01-2017 15:44:02

raleur
Membre
Inscription : 03-10-2014

Re : mv supprime le n° d'inode? [résolu]

1) Il garde le même inode si la destination est dans le même système de fichiers. Dans ce cas on ne déplace que l'entrée de répertoire (la référence).
Par contre si la destination est dans un autre système de fichiers, alors cela revient à créer le fichier de destination avec un nouvel inode, y copier les données du fichier source et supprimer le fichier (en fait la référence) source. Question : que se passe-t-il si le fichier source a plusieurs références (liens durs) ?
Note : Peu importe qu'on le renomme ou pas lors du déplacement.

2) Oui. Le simple renommage d'un fichier ne modifie que le contenu du répertoire qui contient la référence et rien d'autre.

Il vaut mieux montrer que raconter.

Hors ligne

#3 11-01-2017 15:48:13

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : mv supprime le n° d'inode? [résolu]

Salut smile



Patrick Debian a écrit :

Ben oui, quand on peut faire compliquer, pourquoi s'en priver?

Ben, non, c'est plus simple, du point de vue de celui qui programme les commandes. Il n'en a qu'une à coder, qu'une à maintenir, qu'une à tester, qu'une à documenter tongue


Tu peux faire l'experience tout seul (dans /tmp, maintenant que tu connais tongue J'ai vérifié au fait, les fichiers s'y trouvant sont effacé après un re-démarrage wink ) avec la commande ls -i, qui t'indique le numéro d'inode wink

cd /tmp
touch essai
ls -i essai
mv essai essai2
ls -i



Edit : grillé par raleur, bien plus précis que moi, comme d'hab


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#4 11-01-2017 16:05:22

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : mv supprime le n° d'inode? [résolu]

@raleur : c'est quoi que tu appelles un systèmes de fichier dans ce cas ? Pour moi, c'était ext4, NTFS ...  https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_fichiers

Je viens de faire ma petite expérience entre 2 partitions différentes du même disque, ayant pourtant le même système de fichier (ext4), et les inodes changent. Du coup, je pense que ma définition du système de fichier n'est pas la bonne.

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#5 11-01-2017 16:12:10

Patrick Debian
Membre
Distrib. : Debian Buster main_contrib_non-free_backpor
(G)UI : Gnome
Inscription : 14-12-2016

Re : mv supprime le n° d'inode? [résolu]

Merci raleur et bendia pour vos infos.

Pour bien comprendre j'ai besoin de savoir ce qu'est un « système de fichiers » et « l'entrée de répertoire (la référence) ».

PS: oui, je suis undébutant ou grand débutant ou même petit débutant, désolé, je dois tout apprendre.

Merci

Edit: Ah, bendia a posé une de mes questions alors que j'écrivais les miennes.

Dernière modification par Patrick Debian (11-01-2017 16:14:14)

Hors ligne

#6 11-01-2017 16:38:12

raleur
Membre
Inscription : 03-10-2014

Re : mv supprime le n° d'inode? [résolu]

bendia a écrit :

c'est quoi que tu appelles un systèmes de fichier dans ce cas ? Pour moi, c'était ext4, NTFS


Ça, ce sont des types (formats) de systèmes de fichiers.
Je parle de l'instanciation d'un système de stockage de fichiers qui est contenue dans une partition, un volume logique, un ensemble RAID...
En très gros si deux fichiers sont "sous" le même point de montage (attention : la racine est en haut, c'est bizarre mais c'est comme ça), alors ils sont probablement dans le même système de fichiers. Il y a des exception, par exemple avec l'option --bind de mount ou avec le type btrfs qui permet de créer plusieurs arborescences dans le même système de fichiers.

Patrick :
Dans les systèmes de fichiers Unix, les répertoires sont des fichiers spéciaux constitués d'entrées. Chaque entrée occupée contient le nom d'un fichier (au sens large, cela peut être un fichier spécial ou un sous-répertoire) et son numéro d'inode. C'est donc une sorte de pointeur, d'où l'appellation "référence".

Note : Cela peut être différent dans d'autres types systèmes de fichiers. Par exemple FAT n'a pas la notion d'inode, les méta-données (taille, date de création/modification, position de début des données...) sont stockées directement dans l'entrée de répertoire. Cela ne permet pas la création de "liens durs" ou "hard links" (entrées de répertoire qui pointent vers le même contenu).

Dernière modification par raleur (11-01-2017 16:44:27)


Il vaut mieux montrer que raconter.

Hors ligne

#7 11-01-2017 17:10:29

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : mv supprime le n° d'inode? [résolu]

Merci raleur smile Dans mon cas effectivement une partition montée sur /, l'autre sur /home.

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#8 11-01-2017 18:27:48

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : mv supprime le n° d'inode? [résolu]

Pour t'embrouiller, il y a aussi le lien physique qui "crée" une référence qui va au même inode.

implijer@jo_lap:/tmp/a$ touch b
implijer@jo_lap:/tmp/a$ ln b c
implijer@jo_lap:/tmp/a$ ls -li


total 0
398094 -rw-r--r-- 2 implijer implijer 0 janv. 11 18:17 b
398094 -rw-r--r-- 2 implijer implijer 0 janv. 11 18:17 c



Mes cours sont un peu loin derrière : y a la référence au niveau des dossiers (qui donne un nom, permission, proprio et une référence à un descripteur), un descripteur (avec l'inode de début du fichier, suivi des blocs qu'il réserve), et les blocs de donnée qui sont les donnée du fichier à proprement dire.
Mais j'ai oublié le truc. Quand on supprime, disons "b". Comment ça se passe pour savoir que "c" existe avec la même inode et qu'il ne doit donc pas libérer l'inode 398094 ? Y a une liste des références quelque part au niveau du descripteur ? (je ne sais pas si j'utilise le bon vocabulaire, pfiou, ça s'en va vite >.<)

Dernière modification par otyugh (11-01-2017 18:28:58)


virtue_signaling.pngpalestine.png

Hors ligne

#9 11-01-2017 20:25:48

raleur
Membre
Inscription : 03-10-2014

Re : mv supprime le n° d'inode? [résolu]

L'inode a un compteur de références (ou liens). On peut le voir dans la sortie de la commande "ls -li" : dans l'exemple ci-dessus, il est à 2 car il y a deux références (b et c) vers l'inode n° 398094.

A chaque fois qu'on "supprime" un "fichier" avec rm, en réalité on supprime une référence (ou lien, c'est pourquoi l'appel système correspondant s'appelle "unlink") et on décrémente le compteur. Quand on supprime la dernière référence, le compteur atteint 0 et on peut libérer l'inode et l'espace que le fichier occupait. En principe du moins, car les systèmes de fichiers versionnés de type "copy on write" (COW) comme btrfs compliquent encore les choses.

Les "inodes orphelins" (orphaned inodes), inodes marqués occupés mais n'ayant aucune référence dans l'arborescence, sont une incohérence classique des systèmes de fichier recherchée et corrigée par fsck.

A noter que le sous-système VFS (virtual filesystem) du noyau maintient un compteur "virtuel" qui est aussi incrémenté chaque fois que le fichier est ouvert par un processus (appel système open) et décrémenté quand il est refermé (appel système close). Chaque ouverture compte comme une référence virtuelle, et le fichier ne sera effectivement supprimé, et l'espace qu'il occupe libéré, que si ce compteur est à zéro, c'est-à-dire si le fichier n'est plus ouvert par aucun processus. En attendant l'inode continue à exister bien que toutes les références dans l'arborescence du système de fichier aient été supprimées, et les processus qui l'ont ouvert peuvent continuer à lire et écrire dedans. Cette particularité est exploitée pour qu'un fichier temporaire soit automatiquement supprimé lorsque le processus qui l'a ouvert se termine même par un plantage. Cela explique aussi pourquoi il arrive qu'on ne gagne pas d'espace libre immédiatement quand on supprime un gros fichier de log (ou autre) : parce qu'il est encore ouvert par le processus qui écrit dedans.

Dernière modification par raleur (12-01-2017 10:07:30)


Il vaut mieux montrer que raconter.

Hors ligne

#10 11-01-2017 20:40:08

raleur
Membre
Inscription : 03-10-2014

Re : mv supprime le n° d'inode? [résolu]

PS pour Patrick : ton titre mentionne "rm" ainsi que le début de ton message initial, mais il s'agit en fait de "mv", non ?

Il vaut mieux montrer que raconter.

Hors ligne

#11 11-01-2017 20:59:08

Patrick Debian
Membre
Distrib. : Debian Buster main_contrib_non-free_backpor
(G)UI : Gnome
Inscription : 14-12-2016

Re : mv supprime le n° d'inode? [résolu]

Oui, oui, c'est bien mv, je corrige cette grossière erreur de ma part. Je suis en plein dans la lecture des wikis et nottament de rm et mv qui se suivent et en plus se ressemble dans leur nomination, j'ai du les confondre, merci.

Tout ce que tu écrit est très intéressants, mais c'est surtout ceux qui sont initiés qui en profitent. Pour moi, cela m'est profitable aussi, car je me familiarise avec ce vocabulaire qui est pour moi nouveau.

Merci pour ta participation et pour celle des autres; j'apprends.

Dernière modification par Patrick Debian (11-01-2017 20:59:56)

Hors ligne

Pied de page des forums