Enlaces en GNU/Linux – Comando ln

00¡Buen día!

Traigo un tema básico pero que muchas veces se olvida y se debe de recordar la utilidad (más si se usa pura consolita xD ). La forma más básica de cómo describir lo que es un enlace, es un acceso directo… pero realmente mencionarlo como un simple acceso directo y nada más, realmente nos quedamos demasiado cortos…

Veamos… con el comando cp se puede hacer copias de archivos, pero con ln el mismo archivo puede estar en varios lugares ocupando el mismo espacio, y esto es uno de los distintivos de los enlaces en GNU/Linux.

Ejemplo:

El archivo file1 tendrá 2 nombres: file1 y file2

ln file1 file2

El archivo file2 (enlace de file1) tiene otro enlace en la carpeta “mi_folder” llamado file3

ln file2 mi_folder/file3

Si eliminamos file1 (rm file1) los demás archivos seguirán teniendo la información original.

Tipos de enlaces

  • Enlaces Duro (Fuerte)
    • El acceso es indistinguible del real, y el borrado del enlace no provoca el borrado del archivo original o directorio. Solamente se pueden crear enlaces fuertes entre archivos del mismo sistema de ficheros.
  • Enlaces Simbólico (suave)

    • Permite dar a un archivo el nombre de otro, pero no enlaza al archivo con un inodo. Más parecido a los accesos directos de Windows.

Pero, ¿Qué es un inodo? El inodo contiene las características de un archivo regular, directorio, o cualquier otro objeto que pueda contener el sistema de archivos.

Más prácticamente, digamos que es el identificador único de un archivo, directorio o cualquier otro objeto en el sistema de archivo.

 

Enlaces Duros (fuertes)

La siguiente imagen explica más gráficamente a lo que se refiere un enlace duro:

a02

Nota: Con ls -i podemos ver el inode (identificador único de cada archivo) de los archivos.

Ejemplo de enlace duro:

echo “hola” > enlace1.txt
ln enlace1.txt enlace2.txt
ls -il

Notar el inode de los archivos.

a04

En la primera columna vemos el inode (el mismo para ambos archivos).

  • La segunda columna son los permisos.
  • La tercera columna nos indica el # de enlaces que tiene el archivo. Según el ejemplo de abajo, sería 2.

 

Enlaces simbólicos (suave)

La siguiente gráfica explica lo que es un enlace simbólico:

a06

Tomar en cuenta que el nombre del enlace simbólico no soporta rutas completas.

Debemos estar dentro del directorio en el que queremos que esté dicho enlace y luego…

ln -s enlace1.txt enlace3.txt
ls -il

Analicemos la salida…

Los bits de permisos en un enlace simbólico no se usan ( l rwxrwxrwx), sino que son determinados por los permisos del archivo apuntado.

a05

Si el archivo apuntado es eliminado, los enlaces simbólicos permanecen, pero ya no serán válidos y carecerán de sentido.

a07

En éste ejemplo, se puede ver que, al eliminar el archivo original (enlace1.txt) y hacemos un ls -il para listar los archivos con su inode, vemos que está en color rojo y pues… si queremos ver el contenido del archivo con cat, nos da error.

Bien, eso es todo. Espero que les sirva (a mí como recordatorio xD ). ¡Saludos!

Comentarios por Facebook

comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*