GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el concepto de crear un archivo con cero bytes en Linux?

Un archivo es (aproximadamente) tres cosas separadas:

  • Un "inodo", una estructura de metadatos que realiza un seguimiento de quién es el propietario del archivo, los permisos y una lista de bloques en el disco que realmente contienen los datos.
  • Una o más entradas de directorio (los nombres de archivo) que apuntan a ese inodo
  • Los propios bloques de datos reales

Cuando crea un archivo vacío, crea solo el inodo y una entrada de directorio que apunta a ese inodo. Lo mismo para archivos dispersos (dd if=/dev/null of=sparse_file bs=10M seek=1 ).

Cuando crea enlaces fijos a un archivo existente, simplemente crea entradas de directorio adicionales que apuntan al mismo inodo.

He simplificado las cosas aquí, pero entiendes la idea.


touch creará un inodo y ls -i o stat mostrará información sobre el inodo:

$ 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: -

Observe que test utiliza 0 bloques. Para almacenar los datos mostrados, el inodo usa algunos bytes. Esos bytes se almacenan en la tabla de inodos. Mire la página ext2 para ver un ejemplo de una estructura de inodo.


ls (o bien, el stat(2) llamada del sistema) le dice el tamaño de los contenidos del archivo La cantidad de espacio que necesita el sistema de archivos para la contabilidad no es parte de eso, y como un detalle de implementación, no es algo que los programas en general deberían cuidar o incluso saber acerca de. Hacer visibles los detalles de implementación haría que la abstracción del sistema de archivos fuera menos útil.


Linux
  1. Linux:¿cuáles son las diferentes formas de establecer permisos de archivos, etc. en Gnu/linux?

  2. Comprender los conceptos básicos de los inodos de UNIX/Linux con ejemplos

  3. ¿Cuál es la limitación máxima de archivos abiertos en Linux?

  4. Eliminar un archivo en Linux usando el número de inodo

  5. ¿Qué sistemas de archivos en Linux almacenan la hora de creación?

Cree un escritorio retro de Apple con Linux MLVWM

¿Qué es umask en Linux?

¿Qué es el Shell en Linux?

¿Qué son los inodos en Linux?

¿Qué es el archivo .bashrc en Linux?

Asegure Linux con el archivo Sudoers