Los diferentes sistemas de archivos del universo UNIX / Linux permiten una variedad de entradas, como archivos normales, directorios, sockets, canalizaciones con nombre y enlaces. En este artículo te explicaré qué son los enlaces, qué tipos de enlaces existen, cómo crear un enlace simbólico y cómo detectar enlaces simbólicos rotos fácilmente. Los enlaces le permiten tener múltiples puntos de entrada en un sistema de archivos, lo que le permite tener muchas menos copias (a veces solo una) pero manteniendo la flexibilidad al tener múltiples formas de acceder a un archivo determinado.
Te puede interesar:Leer y escribir archivos CSV con Node.jsVinculación de entradas
Contenido
En la línea de comandos de UNIX / Linux, la herramienta ln
abrevia el término enlace. Le permite crear una referencia adicional a un archivo o directorio. Lo hace agregando un nombre adicional de una entrada en la tabla de asignación de archivos del sistema de archivos. Una vez hecho esto, puede acceder al archivo o directorio referenciado tanto con el nombre original como con el nuevo nombre. Piense en una sola persona que podría ser un empleado, cliente y prospecto.
La herramienta ln
pertenece a la lista de software esencial en Unix / Linux. En Debian GNU / Linux y Ubuntu es parte del paquete coreutils
.
Enlaces duros vs Softlinks
Existe una clara distinción entre enlaces físicos y enlaces blandos. Los enlaces suaves también se denominan enlaces simbólicos. Hay bastantes diferencias entre los dos tipos que se enumeran a continuación:
Te puede interesar:Git: eliminar sucursales de forma local y remotaEnlaces duros Enlace suave (enlace simbólico)
Te puede interesar:Git: volver a una confirmación anteriorEl objetivo debe existir | Es posible que el destino ya exista, pero no es necesario |
Permitido solo en sistemas de archivos | Permitido entre diferentes sistemas de archivos |
Vínculos directamente al lugar donde se almacena el archivo | Vínculos a la entrada en la tabla del sistema de archivos (node) |
Eliminar el enlace significa eliminar todo el archivo | Eliminar el enlace significa eliminar el enlace al node, no el archivo en sí |
Cómo crear enlaces simbólicos
Ejecutando el ln
El comando sin opciones crea un vínculo físico desde el origen al destino. Con la ayuda de la opción -s
en su lugar, crea un vínculo simbólico. -s
es el nombre corto de la opción, mientras que --symbolic
es el nombre más largo. El enlace se creará en el directorio actual del sistema de archivos en el momento de su creación. Los desarrolladores simplemente usan el término enlace simbólico. En general, llámelo de la siguiente manera:
$ ln -s [target] [link_name]
target
es el archivo o directorio al que enlazar, y link_name
es el nombre del enlace que hará referencia al destino. Como ejemplo, esta llamada crea un enlace simbólico desde link_to_python
a /usr/bin/python
:
Ejemplo 1: creación de un enlace simbólico
Te puede interesar:Monitoreo de cambios de datos usando un HIDS$ ln -s /usr/bin/python link_to_python
$ ls -la link_to_python
lrwxrwxrwx 1 frank frank 15 Oct 5 14:25 link_to_python -> /usr/bin/python
Ver qué ln
hace, una opción útil es -v
(--verbose
para la opción más larga). Esto le brinda más información sobre la acción.
Ejemplo 2: crear un enlace simbólico con información adicional
Te puede interesar:Cómo usar el comando crontab en Unix$ ln -sv /usr/bin/python link_to_python
link_to_python -> /usr/bin/python
Como puede ver, la salida del comando muestra el nuevo enlace creado.
Te puede interesar:Uso de SCP para copiar y transferir archivos y carpetas de forma seguraCasos de uso
Primero, un caso de uso regular del que quizás no haya tenido conocimiento son dos entradas del sistema de archivos de uso común: .
(el directorio local) y ..
(directorio de padres). Estos se implementan como enlaces simbólicos.
En segundo lugar, los desarrolladores instalan varias versiones de un programa para realizar sus pruebas. El uso de enlaces simbólicos puede resultar bastante útil para hacer referencia a la versión actual que se está probando, y mantiene dos o más instancias disponibles sin muchos problemas.
Encontrar enlaces simbólicos muertos
¿Qué sucede si elimina un archivo que tiene un enlace simbólico apuntando a él? Nos referimos a estos enlaces con un «objetivo» inexistente como enlaces «muertos». Para detectar tales casos el encontrar El comando es bastante útil. Por tanto, la opción -L
y la acción -type l
entra en juego. los -L
bandera dice find
para seguir enlaces simbólicos, mientras -type l
solo coincidirá con enlaces simbólicos.
En el ejemplo 3, el directorio actual contiene dos archivos llamados auto
y backup
, así como dos enlaces simbólicos: data
apuntando a auto
y generic
apuntando a files
. Desafortunadamente, el files
el archivo / directorio no existe.
Utilizando la find
comando, podemos examinar los enlaces y generar sus nombres en caso de que el destino del enlace no exista. En nuestro caso es el enlace simbólico denominado generic
apuntando a files
eso no existe.
Ejemplo 3: detección de enlaces rotos mediante find
$ ls -la
total 4
drwxr-xr-x 2 frank frank 1024 Oct 5 13:36 .
drwxrwxrwt 44 root root 3072 Oct 5 13:35 ..
-rw-r--r-- 1 frank frank 0 Oct 5 13:34 auto
-rw-r--r-- 1 frank frank 0 Oct 5 13:34 backup
lrwxrwxrwx 1 frank frank 1 Oct 5 13:35 data -> auto
lrwxrwxrwx 1 frank frank 1 Oct 5 13:35 generic -> files
$ find -L . -type l
./generic
Como alternativa, puede que le guste el symlinks
mando. Este es un paquete no predeterminado disponible para Debian GNU / Linux y Ubuntu. Con las dos opciones -s
y -v
, symlinks
detecta las entradas. Como se ve en el Ejemplo 4 a continuación, los enlaces sin objetivos válidos se clasifican como colgantes.
Ejemplo 4: detección de enlaces rotos mediante symlinks
$ symlinks -sv .
dangling: /directory/generic -> files
relative: /directory/data -> auto
Conclusión
El concepto de enlaces simbólicos no es un gran misterio. La creación de estas referencias puede simplificar el uso del software y ayuda a probar diferentes versiones del mismo en el mismo sistema. Tenga en cuenta que el Instituto Profesional de Linux (LPI) le hará preguntas al respecto durante la certificación de LPI1.