Con la interfaz de línea de comandos de Linux, es posible crear enlaces rá­pi­da­me­n­te. Para ello es necesario el comando ln, que es re­la­ti­va­me­n­te fácil de utilizar. De hecho, para muchas rutinas de apli­ca­ción, hace falta re­la­ti­va­me­n­te poco código. No obstante, para crear un enlace concreto de manera eficiente, debes saber la di­fe­re­n­cia entre enlaces duros y enlaces si­m­bó­li­cos. Te ex­pli­ca­mos 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 abre­via­tu­ra de “link”, enlace en inglés), se consigue crear enlaces a un archivo o carpeta. Para ello, uti­li­za­mos 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 im­po­r­ta­n­tes y uti­li­za­dos. Con este comando de la lista de comandos, es posible generar enlaces si­m­bó­li­cos o duros.

¿Qué son los enlaces si­m­bó­li­cos y los enlaces duros?

Para poder utilizar ln de Linux con sentido y propósito, es necesario conocer la di­fe­re­n­cia entre los enlaces duros y los si­m­bó­li­cos. Los enlaces si­m­bó­li­cos son una re­fe­re­n­cia cruzada que se dirige a un archivo original mediante una ruta de re­fe­re­n­cia. Si se traslada o elimina el archivo original, deja de haber un destino y la in­di­ca­ción se queda vacía, pero si en cambio se elimina el enlace simbólico, el archivo original se mantiene, solo se borra la re­fe­re­n­cia a ese archivo. Los enlaces si­m­bó­li­cos 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 si­m­bó­li­cos en la ad­mi­ni­s­tra­ción de memoria de un sistema operativo y en el sistema de archivos integrado utilizado. Un enlace duro es una entrada de di­re­c­to­rio adicional a un archivo original, por lo que diversos enlaces duros pueden hacer re­fe­re­n­cia al mismo archivo. En de­fi­ni­ti­va, Linux no di­fe­re­n­cia entre el enlace original (primario) y un enlace duro generado a po­s­te­rio­ri (enlace se­cu­n­da­rio o de se­gui­mie­n­to) a nivel técnico y operativo. Por tanto, todas las entradas a la carpeta cuentan con los mismos derechos y funcionan in­de­pe­n­die­n­te­me­n­te los unos de los otros. Mediante un enlace duro, es posible acceder a un archivo de maneras distintas, algo que se utiliza con relativa fre­cue­n­cia por ejemplo para las copias de seguridad.

Las pe­cu­lia­ri­da­des y el fu­n­cio­na­mie­n­to de los enlaces duros se explican mejor con un ejemplo concreto. Un archivo de vídeo al que solo se puede acceder desde el di­re­c­to­rio “Mis vídeos” puede cargarse también a partir del di­re­c­to­rio “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 re­fe­re­n­cia primaria al archivo de vídeo), es posible seguir ac­ce­die­n­do a este mediante la ruta paralela equi­va­le­n­te sin problema alguno (la ruta del enlace duro al archivo del di­re­c­to­rio “Mis vídeos-Copia de seguridad”). Los enlaces duros tienen la ventaja de que una nota adicional en la ad­mi­ni­s­tra­ción del espacio no ocupa el doble de espacio. Son úni­ca­me­n­te opciones de acceso al­te­r­na­ti­vas (mediante una ruta de archivo) que no re­pre­se­n­tan una segunda copia física completa de un archivo.

Los enlaces duros están es­tre­cha­me­n­te re­la­cio­na­dos con un sistema especial de co­n­ta­bi­li­dad interna. Cada enlace duro hace re­fe­re­n­cia a un llamado “inodo” y se le asigna un número de inodo ine­quí­vo­co e in­co­n­fu­n­di­ble que también está asociado al archivo original. Un archivo solo se borra de­fi­ni­ti­va­me­n­te en la ad­mi­ni­s­tra­ción de inodos, y por tanto también en el sistema, cuando todas las entradas (es decir, las re­fe­re­n­cias a este fichero) se han declarado inválidas al eli­mi­nar­se 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 di­re­c­to­rio, no cambiará nada. Las opciones re­ma­ne­n­tes y de­po­si­ta­das en el inodo seguirán siendo válidas para acceder a los archivos ori­gi­na­les.

Hecho

Los inodos son es­tru­c­tu­ras de datos definidas que describen a un archivo único, contienen in­fo­r­ma­ción de metadatos sobre él (pe­r­te­ne­n­cia a un grupo, pro­pie­ta­rio, derechos de acceso, etc.) y do­cu­me­n­tan su ubicación de al­ma­ce­na­mie­n­to (en forma de una dirección de al­ma­ce­na­mie­n­to).

¿Para qué sirven los enlaces duros y los enlaces si­m­bó­li­cos?

El usuario de a pie puede generar los típicos enlaces con los enlaces si­m­bó­li­cos. También es posible enlazar archivos y di­re­c­to­rios mediante los límites del sistema de archivos, sin que los distintos discos y pa­r­ti­cio­nes supongan ningún obstáculo. No obstante, los enlaces si­m­bó­li­cos no son tan flexibles como los duros cuando se realizan cambios en el objeto de re­fe­re­n­cia (se desplaza o borra).

Los enlaces duros no­r­ma­l­me­n­te solo pueden enlazar archivos, no di­re­c­to­rios ni carpetas. Como los números de inodos vi­n­cu­la­dos a los enlaces duros solo pueden ad­mi­ni­s­trar­se dentro de las pa­r­ti­cio­nes, solo son posibles los enlaces dentro de dichas pa­r­ti­cio­nes. No obstante, los sistemas modernos de Linux suelen contener distintos sistemas de archivos que se en­cue­n­tran en distintos discos y pa­r­ti­cio­nes. Por tanto, quien trabaje es­pe­cí­fi­ca­me­n­te con enlaces duros al crear enlaces en Linux debe conocer bien su sistema y disponer de ciertos co­no­ci­mie­n­tos básicos (por ejemplo, sobre las pa­r­ti­cio­nes y el formateo).

Las copias de seguridad cuentan con ciertas ventajas. Nos ofrecen otra al­te­r­na­ti­va para acceder al original, algo que ahorra espacio y además aumenta la seguridad de los datos. Estas pro­pie­da­des be­ne­fi­cio­sas de la técnica de enlace las utiliza por ejemplo el software >Ha­r­d­li­n­k­Ba­c­kup">Ha­r­d­li­n­k­Ba­c­kup.

Como los enlaces duros re­pre­se­n­tan di­re­c­ta­me­n­te el archivo original, los procesos co­mpu­tacio­na­les no deben eliminar las re­fe­re­n­cias, a di­fe­re­n­cia de los enlaces si­m­bó­li­cos. De esta manera pueden pro­ce­sar­se con mayor rapidez y son co­m­ple­ta­me­n­te tra­n­s­pa­re­n­tes, por ejemplo, para las apli­ca­cio­nes. Además, con los enlaces duros podemos so­lu­cio­nar problemas es­pe­cia­les. Si por ejemplo un programa requiere obli­ga­to­ria­me­n­te una bi­blio­te­ca que ya no está ac­tua­li­za­da, un enlace duro puede conservar esa función adicional. Este retoma el nombre de la bi­blio­te­ca obsoleta (y fi­na­l­me­n­te eliminada) y redirige a una versión más actual.

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

A co­n­ti­nua­ción, te pre­se­n­ta­mos algunos ejemplos sencillos de apli­ca­ción para crear enlaces en Linux. La sintaxis de comando es adecuada para tareas ru­ti­na­rias im­po­r­ta­n­tes que se realizan con re­gu­la­ri­dad. Evi­de­n­te­me­n­te, 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. No­r­ma­l­me­n­te también tendrás que formular código complejo.

Crear un enlace duro en el mismo di­re­c­to­rio

En la co­n­fi­gu­ra­ción estándar sin opciones adi­cio­na­les, 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 di­re­c­to­rio para vídeos. De esta manera, el enlace duro puede tra­s­la­dar­se 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 di­re­c­to­rio

Para crear un link a un archivo de vídeo en el es­cri­to­rio 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 di­re­c­to­rio

Podemos crear enlaces si­m­bó­li­cos en otros di­re­c­to­rios, p. ej. en el es­cri­to­rio:

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 = di­re­c­to­rio 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 es­cri­to­rio. 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 in­fo­r­ma­ció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 si­m­bó­li­cos pueden eli­mi­nar­se 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 enu­me­rar­los 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 en­cue­n­tran en una su­b­ca­r­pe­ta, deben eli­mi­nar­se 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 di­re­c­to­rio. Coloca un enlace simbólico para la carpeta de vídeo en el es­cri­to­rio 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 es­pe­ci­fi­ca­cio­nes de rutas completas (rutas absolutas) al crear enlaces en Linux. El shell y el comando ln de Linux también aceptan es­pe­ci­fi­ca­cio­nes de rutas relativas y accesos directos. Por ejemplo, una vi­r­gu­li­lla (~) re­pre­se­n­ta la ruta absoluta del di­re­c­to­rio personal del usuario actual (en nuestro ejemplo: /home/peter/). Este es el código compacto para un enlace simbólico que dirige al di­re­c­to­rio de vídeos en el es­cri­to­rio (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 au­to­má­ti­ca­me­n­te una es­tru­c­tu­ra de carpeta. Por lo tanto, los niveles de carpeta a los que se dirigen los enlaces deben existir ya (po­si­ble­me­n­te también las su­b­ca­r­pe­tas si hay varios niveles de carpeta re­le­va­n­tes), de lo contrario el comando ln no se ejecutará con éxito y sin errores.

Crear múltiples enlaces si­m­bó­li­cos si­mu­l­tá­nea­me­n­te 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 es­tru­c­tu­rar­se 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 su­b­ca­r­pe­ta en el di­re­c­to­rio de vídeo de Peter. Los enlaces si­m­bó­li­cos al archivo de vídeo y a la carpeta de prueba deben generarse en el di­re­c­to­rio de destino "Carpeta de enlaces si­m­bó­li­cos”:

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

Puedes reconocer el archivo de seguridad creado por la vi­r­gu­li­lla 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 so­bre­s­cri­bir 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 pa­rá­me­tros y opciones di­s­po­ni­bles para el comando ln. Añade “-i” (i = in­ter­ac­ti­vo) y se te pre­gu­n­ta­rá si la meta ha de ser eliminada.

Ir al menú principal