¡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:
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.
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:
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.
Si el archivo apuntado es eliminado, los enlaces simbólicos permanecen, pero ya no serán válidos y carecerán de sentido.
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!