Los archivos de links son una manera de crear un atajo a otro archivo, de tal forma que estamos creando un pseudo-archivo que refiere al original.
Voy a usar el ejemplo que dan en Linux.com: Imaginemos que tenemos una
carpeta cualquiera en un USB (/media/usb/music
) y creamos un archivo de link
a este USB en nuestro usuario (~/music
). Si abres el link, estarás en
~/music
, no te redirigirá a /media/usb/music
. Pero si haces algunos cambios
ahí, estos se reflejarán automáticamente en el original.
Se pueden usar en los siguientes ámbitos:
- Crear una dirección alternativa a un archivo que se encuentre muy escondido en la jerarquía.
- Enlazar librerías.
- Tener como una copia del mismo archivo en diferentes lugares.
Tipos de links
- Hard links
- Symbolic links
Los hard links solo se pueden usar con archivos (no directorios) que estén en tu mismo dispositivo (ni USBs, otros discos, etc). Incluso si se borra el original, el enlace seguirá siendo válido. En lo que a Linux le respecta, ambos archivos son el mismo, porque tienen los mismos inodos.
Los enlaces simbólicos sí que pueden referirse a directorios de otros dispositivos, pero en el caso de eliminar el original aparecerán como rotos. A diferencia de los hard links, estos sí tiene su propio inodo.
Creación de links
Para crear un hard link se usa simplemente el siguiente comando:
1ln ORIGINAL LINK
Un enlace simbólico también se crea con el comando ln
, pero con una flag
adicional:
1ln -s ORIGINAL LINK
Y se borrarían como un archivo completamente normal:
1rm LINK
¿Cómo diferenciar los dos tipos?
En realidad, solamente podrás diferenciar los soft links, porque aparecerá
(tras un comando ls -l
) una l
indicando que es un enlace. Además de eso,
después del nombre del archivo, se mostrará a que otro archivo hace referencia:
1lrwxrwxrwx 1 magno magno 26 Jan 27 17:50 soft -> originals/example-soft.txt
Por otro lado, un hard link, no podrá diferenciarse de ningún archivo normal,
ya que se mostrará -
indicando que es un archivo, y no aparecerá ningún
indicador de donde esta el otro archivo al que hace referencia.
Puede que si que exista una forma de comprobarlo, pero yo todavía no lo he descubierto.
Más?: Usa
$ man ln