Linux no tiene accesos directos, pero tiene enlaces simbólicos, o Symlinks, como se les suele llamar. Pero, ¿qué son exactamente los enlaces simbólicos? ¿Y cómo se crea uno? Vamos a averiguar.
Probaremos los comandos en una instalación de Ubuntu, aunque la sintaxis funciona igual en todas las distribuciones de Linux. Curiosamente, los enlaces simbólicos también se pueden crear en una PC Mac.
¿Qué son los enlaces simbólicos?
Si desea poder acceder a un archivo desde varias ubicaciones, simplemente copiarlo no es una buena solución. Está desperdiciando espacio en disco, sin mencionar que dificulta el seguimiento de los cambios debido a que hay varios archivos.
En un sistema operativo basado en GUI, superaría esto creando accesos directos. Para un sistema operativo basado en CUI (como cualquier distribución de Linux), la respuesta es un enlace simbólico. Incluso Microsoft Windows puede aprovechar los enlaces simbólicos en algunas situaciones.
Un enlace simbólico o un enlace simbólico es solo un archivo que apunta a otro archivo o directorio, incluso en un sistema de archivos o partición completamente diferente. Abrir el enlace simbólico le da acceso al mismo archivo original, con cualquier cambio reflejado también en el archivo principal.
Esto también se aplica a los permisos: el uso de chmod para cambiar los permisos de un archivo de enlace simbólico en realidad modificará los permisos del archivo de destino.
Tipos de enlaces simbólicos
Los enlaces simbólicos también se conocen como enlaces blandos. Como su nombre podría sugerir, no es el único tipo de sistema de enlace de archivos en Linux. Los enlaces duros se pueden usar como una alternativa a los enlaces simbólicos en ciertos escenarios, aunque tienen una serie de restricciones.
Para empezar, enlaces duros son simplemente nombres de archivo que apuntan al mismo inodo. Si bien esto los hace muy eficientes en términos de almacenamiento y velocidad de acceso, también los limita a archivos en el mismo sistema de archivos o partición. Y debido a una peculiaridad de cómo funciona el acceso a carpetas en Linux, tampoco puede usar enlaces duros para directorios.
Enlaces blandos o enlaces simbólicos, por otro lado, son más como accesos directos de escritorio. Cada enlace suave es esencialmente un pequeño archivo que apunta a los datos originales, sin estar realmente vinculado directamente a ellos. Esto significa que los enlaces blandos pueden apuntar fácilmente a archivos y directorios en otras particiones y sistemas de archivos sin ninguna restricción.
Enlaces duros VS Enlaces blandos: ¿qué tipo usar?
Los enlaces suaves son la forma más versátil de enlaces, ya que se pueden usar tanto en archivos como en directorios en múltiples sistemas de archivos sin ninguna restricción. Pero, ¿por qué entonces tenemos enlaces duros? ¿Le ofrecen alguna ventaja sobre los enlaces simbólicos?
Bueno, en papel, los enlaces duros son más eficientes. Debido a que usan los mismos inodos, no ocupan espacio adicional en el disco y se puede acceder a ellos mucho más rápido que los enlaces suaves. Es por eso que muchos administradores de sistemas recomendarán usar enlaces duros siempre que pueda.
Dicho esto, sin embargo, las desventajas de usar enlaces simbólicos son mínimas. En especial, a las computadoras modernas no les importan unos pocos kilobytes de almacenamiento adicional y, a menos que esté llenando el sistema con millones de enlaces blandos, el tamaño adicional del archivo rara vez importa.
Creación de enlaces simbólicos
Los enlaces simbólicos, o más bien, los enlaces de archivos en general, se crean utilizando el comando ln. De forma predeterminada, el comando crea enlaces duros. Para crear un enlace simbólico, debe agregar el indicador -s al comando ln.
La sintaxis es bastante simple. El comando ln toma dos parámetros: la ruta del archivo (o carpeta) que se vinculará y la ruta del archivo de vínculo que se creará.
Como esto:
ln -s nombres_de_usuario.txt nombres
Esto creará un enlace simbólico llamado nombres conectado al archivo de texto de nombres de usuario. Para ver si el enlace simbólico se creó realmente, simplemente use el comando ls.
Como puede ver, Ubuntu muestra diferentes colores para diferentes categorías de archivos, con directorios indicados en azul oscuro y enlaces simbólicos con un color azul más claro (cian, en realidad).
También podemos usar la misma sintaxis para crear un enlace simbólico para la carpeta:
ln -s ejemplos carpeta_ejemplo
Para crear enlaces simbólicos a archivos y carpetas en otros directorios, simplemente use su ruta completa. Por ejemplo:
ln -s ejemplos/ejemplo3.txt ejemplo_distante
Limitaciones de los enlaces simbólicos
Los enlaces simbólicos son una excelente manera de conectar archivos a través de su sistema sin tener que recurrir a hacer copias, pero tienen sus propias limitaciones. Sí, aunque los enlaces suaves son menos restrictivos que los enlaces duros, todavía hay algunas cosas a tener en cuenta.
Primero, el comando ln en realidad no verifica los enlaces creados. Esto significa que es posible ingresar un nombre de archivo que en realidad no existe, y no obtendrá ningún error. La única forma de confirmar el enlace es intentar usarlo y ver si lleva al archivo correcto.
En segundo lugar, mientras que acceder o cambiar los permisos del enlace simbólico cambia las propiedades del archivo original, no ocurre lo mismo con la eliminación de archivos. Puede eliminar con seguridad el vínculo simbólico sin afectar el archivo o directorio vinculado.
Creación de enlaces simbólicos en Linux
El mayor problema al usar la terminal para crear enlaces simbólicos es la dificultad de acceder a archivos importantes repartidos en varios directorios. La solución inteligente es crear enlaces simbólicos a dichos archivos desde su propio directorio de inicio, como accesos directos de escritorio.
Y a diferencia de los enlaces duros, los enlaces simbólicos se pueden hacer fácilmente sin restricciones, incluso para conectarse a directorios o archivos en diferentes particiones y sistemas de archivos. Tenga en cuenta que esto también significa que un enlace simbólico puede apuntar a un archivo inexistente; tendrá que intentar acceder al enlace para verificar si el archivo existe.