Soft vs Hard Links: Explorando las Diferencias Clave

Clasificado en Informática

Escrito el en español con un tamaño de 3,22 KB

Diferencias entre Soft y Hard Links

Los enlaces simbólicos se pueden crear tanto para ficheros como para directorios, mientras que los enlaces duros solo se pueden crear entre ficheros.

Los enlaces simbólicos pueden apuntar a ubicaciones en distintos sistemas de ficheros, mientras que los enlaces duros no.

Los enlaces duros comparten el número de inodo, los enlaces simbólicos no.

En los enlaces simbólicos, si se borra el fichero o directorio original, la información se pierde. En los enlaces duros, la información permanece accesible a través del enlace.

Los enlaces duros son copias exactas del fichero, mientras que los enlaces simbólicos son meros punteros o «accesos directos».

Enlaces Simbólicos

Para crear enlaces (tanto simbólicos como duros) usamos el comando ln. En este caso, vamos a crear un enlace simbólico (parámetro -s) del fichero test:

$ ln -s test enlace-a-test

Si listamos ambos, veremos que el enlace tiene el carácter l que lo identifica como enlace simbólico:

$ ls -l
lrwxrwxrwx 1 alex alex 4 2011-04-27 18:59 enlace-a-test -> test
-rw-r--r-- 1 alex alex 0 2011-04-27 18:58 test

Para confirmar que el enlace simbólico tiene un inodo distinto, usamos el comando stat:

$ stat test
$ stat enlace-a-test

También lo podemos verificar sacando el inodo en el ls (-i):

Hay que tener en cuenta que, en Linux/Unix (al igual que con los accesos directos de Windows), si borramos el fichero o directorio origen, el enlace simbólico permanece, pero los datos desaparecen para siempre.

Enlaces Duros (Hard Links)

Los enlaces duros no pueden crearse contra directorios y tampoco fuera del propio sistema de ficheros.

Vamos a crear un hard link contra el fichero «test» de antes y veremos que, efectivamente, comparten inodo y que los datos se sincronizan entre ambos:

$ ln test enlace-duro-test
$ ls -li
73793 -rw-r--r-- 2 alex alex 5 2011-04-27 19:09 enlace-duro-test
73793 -rw-r--r-- 2 alex alex 5 2011-04-27 19:09 test

En la primera columna verificamos que tienen el mismo número de inodo y en la tercera se especifica cuántos enlaces duros tiene el fichero. Si hacéis cambios en uno de ellos, veréis que también se hacen en el resto. Si, por ejemplo, cambiamos los permisos al fichero test:

$ chmod 0755 test
$ ls -li
73793 -rwxr-xr-x 2 alex alex 5 2011-04-27 19:09 enlace-duro-test
73793 -rwxr-xr-x 2 alex alex 5 2011-04-27 19:09 test

Y, finalmente, el stat de cada uno verifica todo lo que comentamos:

$ stat test
$ stat enlace-duro-test

Entradas relacionadas: