GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le concept de création d'un fichier avec zéro octet sous Linux ?

Un fichier est (en gros) trois choses distinctes :

  • Un "inode", une structure de métadonnées qui garde une trace du propriétaire du fichier, des autorisations et une liste des blocs sur le disque qui contiennent réellement les données.
  • Une ou plusieurs entrées de répertoire (les noms de fichiers) qui pointent vers cet inode
  • Les blocs de données eux-mêmes

Lorsque vous créez un fichier vide, vous créez uniquement l'inode et une entrée de répertoire pointant vers cet inode. Idem pour les fichiers clairsemés (dd if=/dev/null of=sparse_file bs=10M seek=1 ).

Lorsque vous créez des liens physiques vers un fichier existant, vous créez simplement des entrées de répertoire supplémentaires qui pointent vers le même inode.

J'ai simplifié les choses ici, mais vous voyez l'idée.


touch va créer un inode , et ls -i ou stat affichera des informations sur l'inode :

$ touch test
$ ls -i test
28971114 test
$ stat test
  File: ‘test’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 28971114    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/1000)   Gid: ( 1000/1000)
Access: 2017-03-28 17:38:07.221131925 +0200
Modify: 2017-03-28 17:38:07.221131925 +0200
Change: 2017-03-28 17:38:07.221131925 +0200
 Birth: -

Notez que test utilise 0 blocs. Pour stocker les données affichées, l'inode utilise quelques octets. Ces octets sont stockés dans la table d'inodes. Regardez la page ext2 pour un exemple de structure inode.


ls (ou bien, le stat(2) appel système) vous indique la taille du contenu du dossier. La quantité d'espace dont le système de fichiers a besoin pour la comptabilité n'en fait pas partie, et en tant que détail d'implémentation, ce n'est pas quelque chose que les programmes en général devraient soins ou même connaître. Rendre les détails d'implémentation visibles rendrait l'abstraction du système de fichiers moins utile.


Linux
  1. Vérifiez l'état du fichier sous Linux avec la commande stat

  2. Qu'est-ce qu'un numéro d'inode sous Linux ?

  3. Linux - Quelles sont les différentes façons de définir les autorisations de fichiers, etc. sur Gnu/linux ?

  4. Comprendre les bases des inodes UNIX / Linux avec des exemples

  5. Quel est le but du fichier .bashrc sous Linux

Construisez un bureau Apple rétro avec Linux MLVWM

Qu'est-ce qu'umask sous Linux ?

Qu'est-ce que le Shell sous Linux ?

Que sont les inodes sous Linux ?

Qu'est-ce qu'un fichier .bashrc sous Linux ?

Sécurisez Linux avec le fichier Sudoers