No, un enlace duro es completamente diferente. Un enlace suave está más cerca de un acceso directo de Windows (aunque existen diferencias importantes, los enlaces simbólicos son más similares a los accesos directos de Windows que los enlaces duros). Un enlace duro es algo diferente y uno que casi nunca necesitará.
Brevemente, se crea un enlace suave con este comando:
ln -s foo bar
Si luego corres ls -l
, verás:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
El ->
medio que bar
es un enlace a foo
. Entonces, abrir bar
, con un editor de texto, por ejemplo, en realidad abrirá el archivo por separado foo
. Sin embargo, la eliminación bar
solo eliminará el acceso directo, no afectará el archivo foo
.
Los enlaces duros, por otro lado, se crean con este comando:
ln foo bar
Si ahora ejecuta ls -l
, no hay indicios de ninguna relación entre los archivos:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Pero, y esto es muy importante, en realidad son el mismo archivo . Los archivos en los sistemas de archivos Unix se almacenan usando inodes ; Un inodo es básicamente la forma en que el sistema de archivos asigna un nombre de archivo a una ubicación particular en el disco duro físico. Entonces, los enlaces duros son archivos que apuntan al mismo inodo que su destino. Otra forma de decir esto es que todos los archivos son en realidad enlaces duros que apuntan a sus inodos. Hacer un enlace duro a un archivo solo crea un nuevo puntero (archivo) en el sistema de archivos que apunta al mismo inodo. Cada inodo puede tener múltiples archivos apuntando a él o uno, o ninguno.
Para entender esto más claramente, use ls -i
que muestra el inodo asociado con un archivo. Creemos un enlace suave y un enlace duro y veamos qué sucede:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Ahora, verifique sus inodos:
Como se puede ver arriba, tanto foo
y HardLinkToFoo
tienen el mismo inodo (16648029), mientras que SoftLinkToFoo tiene una diferente (16648036).
¿Qué sucede si cambiamos el nombre foo
con mv foo bar
?
El color rojo indica un enlace blando roto, uno cuyo objetivo ya no se puede encontrar. Esto se debe a que los enlaces suaves apuntan al nombre de un archivo, no a su inodo. Tenga en cuenta que a pesar de cambiar el nombre, el inodo sigue siendo el mismo, por lo que el enlace duro está bien, aún funciona.
En resumen, los enlaces duros son en realidad dos manifestaciones del mismo archivo; son punteros a la misma sección del disco. Los enlaces blandos son solo atajos. Para tomar una analogía del mundo real, los enlaces duros son como dos números de teléfono diferentes para la misma línea telefónica y los enlaces suaves son como tener dos líneas telefónicas diferentes en la misma casa.