¿Cuál es la diferencia entre un enlace suave (simbólico) y un enlace duro?

59

Escuché que ahora también puedes crear enlaces suaves en Vista . Entonces, ¿cuál es la diferencia entre un enlace suave (simbólico) y un enlace duro en UNIX / Linux / Vista?

¿Hay ventajas de usar uno sobre el otro? ¿O simplemente sirven para dos propósitos distintos?

Aaron K
fuente
En términos prácticos, la respuesta es que casi siempre quieres usar un enlace simbólico. Tengo entendido que los enlaces duros son principalmente para preservar el espacio, especialmente en cosas como instantáneas y copias de seguridad incrementales, donde las instantáneas sucesivas tienen muchos archivos idénticos que es poco probable que cambien en el futuro.
Ryan Thompson
¿Debería migrar esto a Unix y Linux? Ver unix.stackexchange.com/questions/9575/…
ripper234
2
No, no se debe migrar. Como la pregunta original no es específica solo para Unix, Windows admite enlaces duros y blandos.
Richard West
1
algunas aplicaciones se romperán (y a veces mal) si usa un enlace suave, especialmente para directorios: el enlace suave se desreferenciará, y cuando lo esté y la aplicación se compare, diga /var/opt/log/appname(su configuración) con el valor desreferenciado, digamos /apps/appname/logs, se quejará Esto no es un partido. La solución para esto es usar un mount --bind(en Linux) para volver a montar el directorio original en la nueva ubicación.
Warren
1
Solo para aclarar un par de puntos incluidos en otras respuestas ... Windows puede hacer enlaces duros (aunque creo que se comportan de manera ligeramente diferente que en Unix). Eche un vistazo al comando mklink y al argumento h. (Si escribe mklink en la línea de comando, verá el archivo de ayuda que incluye la sintaxis básica.)

Respuestas:

68

Un enlace duro comparte tradicionalmente las mismas estructuras del sistema de archivos (inodo en unixspeak), mientras que un enlace suave es una redirección de nombre de ruta.

  • Los enlaces duros deben estar en el mismo sistema de archivos, los enlaces suaves pueden cruzar sistemas de archivos.
  • Los archivos vinculados permanecen vinculados incluso si mueve cualquiera de ellos (a menos que mueva uno a otro sistema de archivos que active el mecanismo de copiar y eliminar). Los archivos vinculados por software se rompen si mueve el destino (original) y, a veces, cuando mueve el enlace (¿Utilizó una ruta absoluta o relativa? ¿Sigue siendo válida?).
  • Los archivos enlazados son iguales, mientras que el original es especial en enlaces suaves, y al borrar el original se borran los datos. Los datos no desaparecen hasta que se eliminan todos los enlaces duros.
  • Los enlaces suaves pueden apuntar a cualquier objetivo, pero la mayoría de los sistemas operativos / sistemas de archivos no permiten directorios de enlace fijo para evitar ciclos en el gráfico del sistema de archivos (con la excepción de las entradas .y ..en directorios Unix que son enlaces duros).
  • Los enlaces suaves pueden requerir un soporte especial de las herramientas para caminar del sistema de archivos. Leer en readlink (2) .

(Algunos detalles son traídos a la mente por mat1t . Gracias.)

dmckee
fuente
Buen resumen Todo usuario de Linux debería saber esto (aunque los enlaces duros son muy poco frecuentes).
Artem Russakovskii
La respuesta de dmckee tiene los detalles sobre la semántica más o menos exactos. El único detalle que agregaría es una explicación de lo que sucede en un nivel superior: un enlace suave es un archivo en sí mismo, mientras que un enlace duro es una entrada de directorio que apunta a datos existentes. Wikipedia tiene más detalles sobre enlaces duros y blandos .
Mr. Shiny and New 安 宇
resumen agradable, muy útil
Razique
99
También debe tenerse en cuenta que los enlaces duros comparten permisos e información de propiedad.
Corey S.
66
Agregue que 2 enlaces duros se crean automáticamente con el nombre. y ... cada vez que crea una carpeta. En Linux, esos son los únicos enlaces duros válidos a una carpeta.
Mircea Vutcovici
10

El resumen es que un enlace simbólico / corto actúa como un acceso directo a la ubicación del primer archivo, mientras que un enlace duro es un acceso directo al archivo en el disco.

Si elimina el destino de un enlace suave, el enlace suave dejará de funcionar, pero si elimina una copia de un enlace duro, el archivo permanecerá en el disco hasta que se eliminen todos los enlaces duros. En efecto, todos los nombres de archivo son enlaces duros al archivo en el disco.

También hay ciertas restricciones, por ejemplo, no creo que pueda crear enlaces duros de carpetas, pero puede crear enlaces blandos de ellos. Los enlaces blandos también pueden apuntar a archivos / carpetas en diferentes unidades y particiones, mientras que los enlaces duros no.

Matthew Steeples
fuente
-1

El sistema MS Windows siempre usa enlaces suaves (atajos). Es decir, el enlace simplemente actúa como un acceso directo que apunta a la ubicación del archivo. Si se mueve la ubicación del original, el enlace se rompe. Además, lo que haga al acceso directo (como cambiar permisos o cambiar el nombre del acceso directo) no afecta el archivo real.

Entonces la pregunta comenzó con una suposición incorrecta. Sí, Vista usa enlaces suaves, pero no es nuevo, es decir, es un atajo de MS.

Reginald Kincaid
fuente
3
No, NTFS admite enlaces duros y lo ha hecho desde NTFS 3.1 (la versión actual desde XP / 2003).
Chris S