Comment Linux gère-t-il une commande de déplacement sous le capot?
Disons que je déplace ma maison dir
/home/me
et je le déplace dans un autre répertoire
/home/foo/me
Comment tous les chemins de fichiers et de répertoires sont-ils me
modifiés? Je sais que mon Desktop
répertoire sous me
est maintenant /home/foo/me/Desktop
aussi bien, Documents
/home/foo/me/Documents
mais le système de fichiers met-il explicitement à jour chaque chemin sous me
pour refléter le changement? Cela ne semble pas très efficace et ce n'est probablement pas ça.
Où puis-je obtenir plus d'informations à ce sujet?
filesystem
Jeff
la source
la source
Réponses:
Pour comprendre comment il déplace les dossiers, vous devrez peut-être comprendre un peu le système de fichiers sous Linux. Tous les fichiers et dossiers sont stockés dans le cadre d'une structure de données appelée " inode ". Chaque fichier a un numéro d'inode, tout comme les dossiers.
Pour afficher l'inode de votre dossier, utilisez la commande
ls -ial foldername
. La première colonne indique le numéro d'inode du fichier. Pour chaque dossier, il existe deux noms uniques.
et..
représentant respectivement le répertoire qui lui est propre et le répertoire parent.Vous pouvez essayer de faire une expérience pour déplacer un répertoire (par exemple, / home / me / source) avec des sous-répertoires et des fichiers vers un autre répertoire (par exemple / home / me / quelque part / else). Le numéro d'inode de / home / me / source et tout son contenu reste le même avant et après le déplacement. La seule différence est le numéro d'inode de
..
, qui partage à l'origine le numéro d'inode de / home / me et devient maintenant le numéro d'inode de / home / me / quelque part / autre. En termes simples, Linux met à jour le lien vers le répertoire source , puis c'est fait.Le contenu du disque dur n'est pas modifié de toute façon, seul l'index d'inode est mis à jour lorsque le dossier est déplacé. Ce n'est bien sûr pas le cas si vous déplacez le dossier vers un autre emplacement physique.
la source
Si vous êtes intéressé par le fonctionnement de programmes tels que
mv
etcp
, rappelez-vous qu'ils sont open source et vous pouvez obtenir l'explication la plus précise en lisant le code. Voici des liens vers tous les utilitaires de base. Plus précisément, vous pouvez trouver mv icila source
you can get the most accurate explanation by reading through the code.
Je ne suis pas d'accord; Pendant longtemps, je n'avais absolument aucune expérience avec C, et même maintenant je ne le préfère pas. De plus, le code source est souvent optimisé et contient plus de cas marginaux que nécessaire. Une explication symbolique aide souvent plus.