sábado, 13 de octubre de 2012

Inodo - Enlaces simbólicos y enlaces duros

El inodo (nodo índice) en el sistema de archivos de Linux, es el identificador único para cada objeto en el sistema de archivos. Para todos y cada uno de los archivos en Linux encontraremos los siguientes atributos:

  • Tipo de archivo (ejecutable, bloque especial, etc) 
  • Permisos (leer, escribir, etc) 
  • Propietario 
  • Grupo 
  • Tamaño del Archivo 
  • Acceso al archivo, el cambio y hora de modificación (recuerdar que Linux no almacena el momento de creación)
  • Número de enlaces (soft / hard) 
  • Lista de Control de Acceso (ACL)  


Toda esta información es la que se almacena en un inodo. Cada inodo está identificado por un número único dentro del sistema de archivos. definición de inodo Un inodo es una estructura de datos en un sistema de archivos al estilo Unix, como UFS o ext3. El inodo almacena información básica sobre un archivo regular, directorio, o cualquier otro objeto del sistema de archivos. ¿Cómo podemos ver el número de inodo de un archivo? Puede utilizar el comando ls-i para ver el número de inodo de archivo
$ ls -i /etc/passwd
32820 /etc/passwd
También podemos utilizar el comando stat para averiguar el número de inodo y sus atributos:
$ stat /etc/passwd

Archivo: `/ etc / passwd '
Tamaño: 1988 Blocks: 8 IO Block: 4096 archivo normal
Dispositivo: Inode 341h/833d: 32820 Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: (0 / root) gid: (0 / root)
Acceso: 2005-11-10 01:26:01.000000000 0530
Modificar: 2005-10-27 13:26:56.000000000 0530
Cambio: 2005-10-27 13:26:56.000000000 0530
Inodo aplicación Muchos de comandos a menudo dan números de inodo para designar un archivo. Vamos a ver.
 
$ ls -li /etc/passwd
12886034 -rw-r--r-- 1 root root 1903 sep 28 13:01 /etc/passwd
Si escribimos los siguientes comandos:
$ cd / tmp
$ touch \ "la *
$ ls -l
Ahora si ententamos eliminar el archivo "la *, veremos que no es posible. No podremos eliminar los archivos si los hemos creado con caracteres de control o un carácter especial como?, * ^ Etc. En estos casos tendremos usar el número de inodo para eliminar archivos.
# ls -i 
# ls -i *
2781528 index.php    2781559 ??!
# find . -inum 2781559 -exec rm -i {} \;
Enlaces duros y simbólicos Para crear un enlace duro utilizamos el comando ln de la siguiente forma:
# ln /root/file1 root/file2 /
# ls -l
Con los comandos anteriores creamos un enlace al file1. Con esto creamos un nuevo apuntador hacia el inodo donde se almacenaba la información de file1 Los enlaces simbólicos se refieren a:
  • Una ruta simbólico que indica la ubicación de otro archivo.
  • Los enlaces físicos se refieren a:
  • La ubicación específica de los datos físicos.
  • Enlaces fijos vs Soft enlace en Linux
  • Los enlaces duros no pueden enlazar directorios.
  • Los enlaces blandos o simbólicos son como enlaces duros. Se permite asociar varios nombres hacia un solo archivo.
  • Sin embargo, los enlaces simbólicos nos permiten:
  • Crear enlaces entre los directorios.
  • Estos enlaces se comportan de forma diferente cuando la fuente del enlace está eliminado.
  • Los enlaces simbólicos no se actualizan.
  • Los enlaces duros siempre hacen referencia a la fuente, incluso si se mueven o eliminan.
  • ¿Cómo creamos un enlace simbólico? Podemos crear un enlace simbólico con el comando ln:
    $ ln -s /home/user/file1.txt /home/user/file2.txt
    $ ls -ali
    
    Con el comando anterior crearemos un enlace simbólico a file1.txt. Tarea: creación de enlaces simbólicos y eliminación Vamos a crear un directorio llamado foo, escribimos:
    $ mkdir foo
    $ cd foo
    
    Copiamos el archivo /etc/resolv.conf:
    $ cp /etc/resolv.conf .
    
    Observar el número de inodo y escribir:
    $ ls -ali
    
    152 Total
    1048600 drwxr-xr-x 2 vivek vivek 09/12/2008 20:19 4096.
    1015809 drwxrwxrwt root root 220 143 360 12.09.2008 20:19 ..
    1048601-rwxr-xr-x 1 vivek vivek 09/12/2008 20:19 129 resolv.conf
    Ahora crear enlace simbólico al resolv.conf, introduzca:
    $ ln -s alink.conf resolv.conf
    $ ls -ali
    
    152 Total
    1048600 drwxr-xr-x 2 vivek vivek 09/12/2008 20:24 4096.
    1015809 drwxrwxrwt root root 220 143 360 12.09.2008 20:19 ..
    1048602 lrwxrwxrwx 1 vivek vivek 09/12/2008 20:24 11 alink.conf -> resolv.conf
    1048601-rwxr-xr-x 1 vivek vivek 09/12/2008 20:19 129 resolv.conf
    
    El contador de referencias del directorio no ha cambiado (total 152). Nuestra simbólico enlace se almacena en un inodo diferente que el archivo de texto (1048602). La información almacenada en resolv.conf es accesible a través del archivo de alink.conf. Si borramos el archivo de texto resolv.conf, alink.conf se convierte en un vínculo roto y nuestros datos se pierden:
    $ rm resolv.conf
    $ ls -ali
    
    Si alink.conf era un vínculo físico, los datos todavía serían accesibles a través de alink.conf. Además, si se elimina el enlace simbólico en sí, los datos todavía estarían allí.

    No hay comentarios:

    Publicar un comentario