Diferencias de enlaces en linux

En Linux cuando hablamos de enlaces, hacemos referencia a dos tipos de vinculaciones entre archivos.

En primer lugar, existe el enlace simbólico, que quizás a los ojos de los usuarios de Windows de toda la vida nos resulte más sencillo y comprensible, ya que funciona exactamente igual que los conocidos accesos directos (a diferencia que al modificar el acceso, el archivo original también camba). También lo podemos encontrar como soft link.

Al generar este tipo de enlaces simbólicos, hay que tener en cuenta que al borrar el link, el archivo se mantendrá en el disco, pero si borramos el origen, los datos se perderán (y el acceso directo quedara creado apuntando a una dirección vacía).

Otra característica de estos, es que se pueden crear tanto sobre archivos como directorios.

La forma de crear uno de estos es:

ln –s /dato-origen /enlace-a-dato

ln –s /mp3/welcometothejungle.mp3 /home/guido/enlace-welcometothejungle.mp3

Si comprobamos el tipo de dato generado con un ls –l en el home de guido, vamos a ver que figura con la L de link por delante.

Los link duros (o hard links) además de ser solo para archivos, estos no pueden ser entre discos distintos y/o otros sistemas de archivos, mientras que los simbólicos sí.

Otra característica es que al borrar un link duro, el archivo original quedara, y al borrar el archivo original, en enlace duro seguirá funcionando.

Para los que vienen de la programación, se puede decir de alguna forma que los enlaces duros son copias que comparten el inodo, y que los simbólicos son punteros.

La forma de crear un enlace duro es la siguiente:

ln /mp3/tengountractoramarillo.mp3 /home/guido/tengountractoramarillo.mp3

 

Al listar con ls –il, vamos a ver que figura por delante con el número de inodo, el cual será el mismo que el del archivo original. (Además un dato es que podremos ver la cantidad de referencias a la derecha de la descripción de permisos)

Otros comandos útiles son:

find / -inum 9999 (número de inodo)  (Busca los links a este inodo)

find . –links +1 (muestra todos los links que tengan más de 1 referencia.

find /root type l (busca todos los links simbólicos en root)