Linux ln: comando para crear enlaces en Linux

Con la interfaz de línea de comandos de Linux, es posible crear enlaces rápidamente. Para ello es necesario el comando ln, que es relativamente fácil de utilizar. De hecho, para muchas rutinas de aplicación, hace falta relativamente poco código. No obstante, para crear un enlace concreto de manera eficiente, debes saber la diferencia entre enlaces duros y enlaces simbólicos. Te explicamos para qué sirve cada uno y te enseñamos, con nuestros ejemplos de uso, qué código necesitas para enlazar con Linux.

¿Qué es el comando ln de Linux?

Con el comando ln de Linux (ln es la abreviatura de “link”, enlace en inglés), se consigue crear enlaces a un archivo o carpeta. Para ello, utilizamos la línea de comandos de Linux, que se abre y maneja mediante una ventana del terminal. ln es uno de los comandos en Linux más importantes y utilizados. Con este comando de la lista de comandos, es posible generar enlaces simbólicos o duros.

¿Qué son los enlaces simbólicos y los enlaces duros?

Para poder utilizar ln de Linux con sentido y propósito, es necesario conocer la diferencia entre los enlaces duros y los simbólicos. Los enlaces simbólicos son una referencia cruzada que se dirige a un archivo original mediante una ruta de referencia. Si se traslada o elimina el archivo original, deja de haber un destino y la indicación se queda vacía, pero si en cambio se elimina el enlace simbólico, el archivo original se mantiene, solo se borra la referencia a ese archivo. Los enlaces simbólicos también se conocen como symlinks (abreviado) o soft links, en inglés. Este tipo de enlaces pueden crearse no solo con el comando ln del terminal de Linux, también con las funciones de la interfaz gráfica de usuario, por ejemplo, con el gestor de archivos de Linux. En la interfaz gráfica de usuario de Linux, podemos reconocer un enlace simbólico mediante el símbolo de una flecha, que también se coloca en el icono del archivo.

Los enlaces duros solo pueden generarse con la línea de comandos. Cuentan con un mayor alcance que los enlaces simbólicos en la administración de memoria de un sistema operativo y en el sistema de archivos integrado utilizado. Un enlace duro es una entrada de directorio adicional a un archivo original, por lo que diversos enlaces duros pueden hacer referencia al mismo archivo. En definitiva, Linux no diferencia entre el enlace original (primario) y un enlace duro generado a posteriori (enlace secundario o de seguimiento) a nivel técnico y operativo. Por tanto, todas las entradas a la carpeta cuentan con los mismos derechos y funcionan independientemente los unos de los otros. Mediante un enlace duro, es posible acceder a un archivo de maneras distintas, algo que se utiliza con relativa frecuencia por ejemplo para las copias de seguridad.

Las peculiaridades y el funcionamiento de los enlaces duros se explican mejor con un ejemplo concreto. Un archivo de vídeo al que solo se puede acceder desde el directorio “Mis vídeos” puede cargarse también a partir del directorio “Mis vídeos-Copia de seguridad” creando un enlace duro. Si ahora se elimina el archivo original en “Mis vídeos” (en sentido puramente estricto, se borra la referencia primaria al archivo de vídeo), es posible seguir accediendo a este mediante la ruta paralela equivalente sin problema alguno (la ruta del enlace duro al archivo del directorio “Mis vídeos-Copia de seguridad”). Los enlaces duros tienen la ventaja de que una nota adicional en la administración del espacio no ocupa el doble de espacio. Son únicamente opciones de acceso alternativas (mediante una ruta de archivo) que no representan una segunda copia física completa de un archivo.

Los enlaces duros están estrechamente relacionados con un sistema especial de contabilidad interna. Cada enlace duro hace referencia a un llamado “inodo” y se le asigna un número de inodo inequívoco e inconfundible que también está asociado al archivo original. Un archivo solo se borra definitivamente en la administración de inodos, y por tanto también en el sistema, cuando todas las entradas (es decir, las referencias a este fichero) se han declarado inválidas al eliminarse y se ha puesto a cero el contador de enlaces interno. Si en cambio solo se elimina una de varias entradas a una dirección o se traslada el archivo original a otro directorio, no cambiará nada. Las opciones remanentes y depositadas en el inodo seguirán siendo válidas para acceder a los archivos originales.

Hecho

Los inodos son estructuras de datos definidas que describen a un archivo único, contienen información de metadatos sobre él (pertenencia a un grupo, propietario, derechos de acceso, etc.) y documentan su ubicación de almacenamiento (en forma de una dirección de almacenamiento).

¿Para qué sirven los enlaces duros y los enlaces simbólicos?

El usuario de a pie puede generar los típicos enlaces con los enlaces simbólicos. También es posible enlazar archivos y directorios mediante los límites del sistema de archivos, sin que los distintos discos y particiones supongan ningún obstáculo. No obstante, los enlaces simbólicos no son tan flexibles como los duros cuando se realizan cambios en el objeto de referencia (se desplaza o borra).

Los enlaces duros normalmente solo pueden enlazar archivos, no directorios ni carpetas. Como los números de inodos vinculados a los enlaces duros solo pueden administrarse dentro de las particiones, solo son posibles los enlaces dentro de dichas particiones. No obstante, los sistemas modernos de Linux suelen contener distintos sistemas de archivos que se encuentran en distintos discos y particiones. Por tanto, quien trabaje específicamente con enlaces duros al crear enlaces en Linux debe conocer bien su sistema y disponer de ciertos conocimientos básicos (por ejemplo, sobre las particiones y el formateo).

Las copias de seguridad cuentan con ciertas ventajas. Nos ofrecen otra alternativa para acceder al original, algo que ahorra espacio y además aumenta la seguridad de los datos. Estas propiedades beneficiosas de la técnica de enlace las utiliza por ejemplo el software >HardlinkBackup">HardlinkBackup.

Como los enlaces duros representan directamente el archivo original, los procesos computacionales no deben eliminar las referencias, a diferencia de los enlaces simbólicos. De esta manera pueden procesarse con mayor rapidez y son completamente transparentes, por ejemplo, para las aplicaciones. Además, con los enlaces duros podemos solucionar problemas especiales. Si por ejemplo un programa requiere obligatoriamente una biblioteca que ya no está actualizada, un enlace duro puede conservar esa función adicional. Este retoma el nombre de la biblioteca obsoleta (y finalmente eliminada) y redirige a una versión más actual.

¿Cómo se utiliza en la práctica el comando ln de Linux?

A continuación, te presentamos algunos ejemplos sencillos de aplicación para crear enlaces en Linux. La sintaxis de comando es adecuada para tareas rutinarias importantes que se realizan con regularidad. Evidentemente, también se pueden realizar acciones de enlace más complejas con el comando ln de Linux, algo que no obstante requiere un poco de práctica en el contexto de la línea de comandos. Normalmente también tendrás que formular código complejo.

Crear un enlace duro en el mismo directorio

En la configuración estándar sin opciones adicionales, el Linux ln crea vínculos fijos en forma de enlaces duros. Para eso, hay que aplicar el siguiente formato de comando:

ln / Referencia de ruta de archivo meta

Con el siguiente código, se creará un enlace duro al archivo de vídeo (video.mp4) en el actual perfil de usuario de Linux “Peter” (/home/peter/). El archivo original y el enlace duro creado están en el mismo directorio para vídeos. De esta manera, el enlace duro puede trasladarse si es necesario sin perder su validez.

ln /home/peter/videos/video.mp4 enlace_duro_a_archivo_de_video

Crear un enlace duro en otro directorio

Para crear un link a un archivo de vídeo en el escritorio de Linux, hay que formular esta sintaxis:

ln /home/peter/videos/video.mp4 /home/peter/desktop/enlace_duro_a_archivo_de_video

Crear un enlace simbólico para archivos

Si queremos crear un enlace simbólico con un comando Linux ln, hay que añadir a la sintaxis la opción “-s” (s = simbólico). El formato de comando para un enlace simbólico es el siguiente:

ln -s Referencia de ruta de archivo meta

En este ejemplo, el enlace simbólico se encuentra en la misma carpeta:

ln -s /home/peter/video.mp4 enlace_simbólico_a_archivo_de_video

Crear un enlace simbólico en otro directorio

Podemos crear enlaces simbólicos en otros directorios, p. ej. en el escritorio:

ln -s /home/peter/videos/video.mp4 /home/peter/Desktop/enlace_simbólico_a_archivo_de_video

Puedes realizar una acción de enlace más compleja con la opción “-t” (t = directorio meta) con este código Linux:

Ls Factura* | xargs ln -s -t /home/peter/Desktop/

La sintaxis de comando crea enlaces a todos los archivos Factura*, que se encuentra en la carpeta de salida, y los ubica en la carpeta de escritorio. El asterisco (*) se encarga de que se registren todos los archivos que empiecen por la palabra “factura” (por ejemplo, Factura_de_enero, Factura_de_febrero, etc.).

Si quieres tener un mejor control sobre las acciones de enlace y mostrar información adicional, la opción “-v” (v de verbose, elocuente en inglés) será de gran ayuda. Te enumera los nombres de todos los archivos enlazados en la pantalla, lo que es útil sobre todo para acciones de enlace extensas.

ln -s -v /home/peter/videos/movie.mp4 /home/peter/Desktop/enlace_simbólico_a_archivo_de_vídeo

Los enlaces simbólicos pueden eliminarse con el comando Linux especial “rm” (rm = remove, eliminar en inglés). El siguiente código elimina un enlace simbólico a un archivo de vídeo en la carpeta de trabajo actual:

rm enlace_simbólico_a_archivo_de_vídeo

Si queremos eliminar en la misma ruta múltiples archivos de vídeo de la carpeta de trabajo actual, has de enumerarlos uno tras otro, separados por un espacio:

rm enlace_simbólico_Video1 enlace_simbólico_Video2 enlace_simbólico_Video3 enlace_simbólico_Video4

Además, con la opción “r” (r = recursivo) puedes, p. ej., eliminar todos los archivos con enlace simbólico dentro de una carpeta con enlace simbólico. Si se encuentran en una subcarpeta, deben eliminarse de la siguiente manera:

rm -r ~/Desktop/carpeta-enlace-simbólico/*

Crear un enlace simbólico para carpetas

El siguiente código no enlaza un archivo, sino un directorio. Coloca un enlace simbólico para la carpeta de vídeo en el escritorio con la siguiente sintaxis de comando:

ln -s /home/peter/videos/ /home/peter/Desktop/enlace_simbólico_para_carpeta_de_vídeo

No siempre hace falta trabajar con especificaciones de rutas completas (rutas absolutas) al crear enlaces en Linux. El shell y el comando ln de Linux también aceptan especificaciones de rutas relativas y accesos directos. Por ejemplo, una virgulilla (~) representa la ruta absoluta del directorio personal del usuario actual (en nuestro ejemplo: /home/peter/). Este es el código compacto para un enlace simbólico que dirige al directorio de vídeos en el escritorio (es decir: /home/peter/videos/):

ln -s ~/videos ~/Desktop/enlace_simbólico_para_carpeta_de_vídeo
Nota

Al enlazar mediante el comando ln de Linux, no se crea automáticamente una estructura de carpeta. Por lo tanto, los niveles de carpeta a los que se dirigen los enlaces deben existir ya (posiblemente también las subcarpetas si hay varios niveles de carpeta relevantes), de lo contrario el comando ln no se ejecutará con éxito y sin errores.

Crear múltiples enlaces simbólicos simultáneamente en una carpeta meta

También es posible enlazar una carpeta y un archivo al mismo tiempo. En este caso, la sintaxis del comando debe estructurarse siguiendo el siguiente patrón:

ln <Option> <Objetodeenlace1> < Objetodeenlace2> <Carpeta meta con enlaces simbólicos para objetos de enlace>

En nuestro ejemplo, el objeto de enlace 1 es una vez más el archivo de la película en la carpeta de vídeo de Peter. El objeto de enlace 2 es una carpeta llamada “Test”, que es una subcarpeta en el directorio de vídeo de Peter. Los enlaces simbólicos al archivo de vídeo y a la carpeta de prueba deben generarse en el directorio de destino "Carpeta de enlaces simbólicos”:

ln -s ~/videos/video.mp4 ~/videos/test/ ~/Desktop/Carpeta-de-enlaces-simbólicos

Puedes reconocer el archivo de seguridad creado por la virgulilla que aparece al final del nombre de la carpeta meta (p. ej. enlace_simbólico_a_archivo_de_vídeo~). Si no necesitas seguridad y quieres sobrescribir un archivo antiguo ya dado de enlace simbólico, utiliza la opción “f” (f = fuerza):

ln -s -f /home/peter/videos/movie.mp4 /home/peter/Desktop/enlace_simbólico_a_archivo_de_vídeo

La opción “--help” es de gran ayuda para crear links en Linux, ya que enumera los parámetros y opciones disponibles para el comando ln. Añade “-i” (i = interactivo) y se te preguntará si la meta ha de ser eliminada.

¿Le ha resultado útil este artículo?
Page top