LPIC-1 Tema 104.6: crear y modificar enlaces duros y simbólicos

Siguiente entrega sobre las certificaciones LPIC-1. El siguiente tema es el 104.6, que es bastante corto y sencillo, ya que simplemente pretende acoger los conocimientos que todo administrador de sistemas GNU/Linux debería tener sobre la gestión de enlaces simbólicos y también los enlaces duros.

Por supuesto, eso también implica conocer los conceptos de enlace simbólico y enlace duro. Además de saber manejar las herramientas ln y algunas opciones de ls. Con ello, se podrán crear los enlaces, identificarlos, saber la diferencia entre copiar y enlazar, además de conocer sus ventajas para ciertas labores de administración.

Teoría

En entornos Unix, por tanto en Linux, no existen los famosos accesos directos de Windows. Aquí se llaman enlaces, pero hay que diferenciar entre dos tipos fundamentales:

  • Enlace duro (hard link): debes saber ya, a estas alturas, que en Linux y Unix, todo fichero y directorio tiene asignado un número llamado inodo. Ese identificador es único para cada archivo, además almacenan una serie de modos o permisos, propiedad, posición/ubicación en el espacio de almacenamiento, fecha de creación, etc. Cuando se habla de enlace duro es un enlace que apuntará a un mismo archivo almacenado en el espacio de almacenamiento original. Eso quiere decir que el original y el enlace duro hacia él tendrán el mismo inode. Por tanto, se puede entender un enlace duro como una forma de identificar a un mismo contenido con otro nombre distinto.
    • Solo se pueden hacer enlaces duros si tanto el archivo enlace como el archivo original están en la misma partición. Eso es así porque cada partición tiene su propia tabla índice de inodos para apuntar a las ubicaciones.
    • Sería similar a una copia, no habría original y enlace, ambos tendrían la misma importancia. Y para que ese archivo deje de existir habría que eliminar ambos (si eliminas uno no se elimina el otro).
    • Se puede cambiar la ubicación del original y el enlace se sigue manteniendo.
    • Además, si haces un cambio en uno de los dos, afectará a ambos por igual, incluso si modificas el enlace se modificará el original.
    • Los permisos y propietario del enlace duro son los mismos al original. Recuerda que tienen mismo inode.
    • No se pueden hacer enlaces duros a directorios o carpetas. Antes sí era posible… puede que aún quede algún SO viejo que lo haga.
    • Los enlaces duros, aunque parezca raro, usan menos espacio en disco que los simbólicos. Y el acceso también es más rápido que en los blandos. Por eso, para crear una copia de seguridad se pueden usar estos enlaces para hacerlo más rápidamente.
    • Pero recuerda las diferencias que hay entre el copying y linking. Copiar un archivo permite también tener un nuevo inode con lo que eso supone…
  • Enlace blando o simbólico (soft link): son similares a los accesos directos de Windows. Por tanto, es un archivo o directorio enlace que apunta a otro original. El enlace blando o simbólico tendrán su propio inode, por eso se pueden modificar sus propietarios, permisos, y pueden hacerse de directorios o carpetas también.
    • Cualquier cambio en el original o en el enlace afectará a ambos por igual. Por ejemplo, si hay un enlace simbólico de un .txt y se modifica el texto en uno de los dos, también aparecerá ese cambio en el otro.
    • Si se elimina el original también se eliminará el enlace.
    • En cambio, si se elimina el enlace no se eliminará el original.
    • Se pueden crear enlaces a directorios, por tanto, se pueden usar como atajos para acceder a un directorio.
    • Se pueden usar desde cualquier tipo de partición, disco duro, FS, etc., ya que no tienen la restricción del inodo común como en los duros.
    • Si modificas la ubicación del original se rompe el enlace.

Herramientas

Lo primero que debes saber es cómo consultar información del inodo de un archivo. Para eso se puede usar la herramienta para listar contenido ls y una opción especial -i. De esa forma puedes saber el número de inodo:

#Obtener el inode de un archivo
ls -li nombre.txt

#Que liste el contenido de un directorio en el que te encuentras o que deseas con los inodes de todo
ls -li
ls -li /etc

Es precisamente otro de los campos que se muestran en la salida de estos comandos los que también serían interesantes para identificar si existe o no un enlace de un archivo concreto. En la siguiente captura muestro en verde los inodes y en rojo el número de entradas o archivos que apuntan hacia ese mismo inode, lo que indica los enlaces existentes:

ls

La herramienta ln sirve para poder crear los enlaces, tanto los blandos como los duros. Para ello, puedes usar lo siguiente:

#Crear un enlace duro de nombre.txt llamado enlaceduro
ln nombre.txt enlaceduro

#Se pueden usar rutas también
ln /home/nombre.txt /home/isaac/enlaceduro

#Crear enlaces duros de forma recursiva de todo el contenido de un directorio en otro
cp -rl /home/isaac /home/eu

#Crear un enlace blando 
ln -s /lib/dic.lib /home/isaac/develop/btca

#Crear enlaces simbólicos de forma recursiva
cp -rs /home/isaac/Images /home/album

#Cuando creas los enlaces, puedes usar ls -li para ver que el número de referencias ha crecido y ya no es 1... Por ejemplo:
ls -li /home/nombre.txt

#Más información 
man ln

Más adelante verás que estos enlaces son también muy prácticos para, por ejemplo, gestionar bibliotecas y lidiar con conflictos por cambios de nombre, ruta, o versiones cuando un binario no funciona debido a que no localiza una de ellas y tiene dependencias…

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

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

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar