El título lo dice todo ... ¿cuál es la diferencia? ¿Cuándo uso uno y cuándo uso el otro?
Agregado: Tenga en cuenta que los puntos de unión , los enlaces duros y los enlaces simbólicos (suaves) son tres cosas separadas en NTFS.
El título lo dice todo ... ¿cuál es la diferencia? ¿Cuándo uso uno y cuándo uso el otro?
Agregado: Tenga en cuenta que los puntos de unión , los enlaces duros y los enlaces simbólicos (suaves) son tres cosas separadas en NTFS.
Respuestas:
Los archivos de datos NTFS se almacenan con todos sus atributos como un "inodo" con una ID, y los nombres de los archivos apuntan al inodo. Todos los archivos tienen uno + enlace duro. Algunas herramientas pueden crear nombres adicionales (enlaces duros) que apuntan al mismo inodo, que tiene un contador del número de nombres apuntando a él. Si el número va a cero, el sistema operativo elimina el archivo, el inodo.
Las herramientas especiales, como LN, pueden crear nombres de archivo adicionales que apuntan a inodos existentes, utilizando un nombre de archivo que los señale. Tenga en cuenta que todos los atributos del archivo, incluidas las fechas y horas, se almacenan con el inodo, no con el nombre del archivo.
Los enlaces duros (extra) son útiles cuando desea que diferentes nombres apunten a los mismos datos, leer o escribir. Ahorran espacio y gastos generales. Sin embargo, los programas de clobber que suponen nombres diferentes apuntan a datos diferentes. por ejemplo, si reemplaza referencias a archivos duplicados por enlaces duros a un solo archivo, ¡entonces ha eliminado cualquier copia de seguridad que tenga! El sistema operativo Windows es un programa que supone que diferentes nombres apuntan a diferentes conjuntos de bits.
Los enlaces duros deben estar en el mismo volumen físico y lógico.
Son útiles para:
reduciendo las longitudes de ruta ya que Windows solo admite 256 caracteres más o menos.
reducir el espacio de almacenamiento de archivos de datos duplicados, por ejemplo, podría tener múltiples copias de seguridad de una partición con múltiples árboles de directorios completos, pero con enlaces duros para archivos que no han cambiado desde la copia de seguridad anterior.
Los puntos de unión son más desordenados y usan Puntos de análisis (que no entiendo). Pueden apuntar a diferentes volúmenes físicos o lógicos, pero tienen que estar en la misma computadora. Aparentemente pueden usarse como enlaces simbólicos para directorios, permitiendo un segundo nombre para el mismo destino, pero limitado a una sola computadora, en lugar de solo un solo volumen.
Útil para reducir las longitudes de ruta o simplificar el trabajo con varios programas con nombres de directorio codificados.
¡Las mismas advertencias también! Muchos programas asumen nombres diferentes = archivos diferentes.
Y luego hay enlaces simbólicos (que pueden ir a través de redes), accesos directos y PIF y .....
También alguna información de Microsoft mismo :
Básicamente, dicen que usan enlaces duros solo para archivos dentro del mismo volumen (letra de unidad de disco) y puntos de unión solo para directorios en la misma computadora (pueden abarcar diferentes volúmenes locales).
Enlace simbólico: un enlace a un archivo o directorio en el mismo o diferente volumen (letra de unidad) o incluso a un archivo o directorio remoto (usando UNC en su ruta).
Enlace duro: un enlace a un archivo en el mismo volumen (letra de unidad) solamente. Cada archivo (datos del archivo) tiene al menos 1 enlace duro (nombre del archivo). Eliminar todos los enlaces duros elimina efectivamente el archivo.
Unión: un enlace a un directorio en el mismo o diferente volumen (letra de unidad) pero no a un directorio remoto.
Suponiendo que está trabajando con volúmenes NTFS en Windows Vista / 7, puede utilizar la herramienta de línea de comandos MKLINK
para crear los tres tipos de enlaces:
MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
Enlaces simbólicos : Un enlace simbólico es un objeto del sistema de archivos que apunta a otro objeto del sistema de archivos (por ejemplo: archivo / directorio).
MKLINK
se puede usar para crear enlaces simbólicos. El uso del /D
parámetro crea un enlace simbólico de directorio. ¡MKLINK no comprueba si el objetivo es un archivo o un directorio o incluso si el objetivo existe! Esto significa que potencialmente puede crear enlaces no válidos como un enlace simbólico de directorio a un archivo o un enlace simbólico a un archivo / directorio inexistente.
Los enlaces simbólicos pueden ser enlaces absolutos o relativos. Los enlaces absolutos son enlaces que especifican cada parte del nombre de la ruta, mientras que los enlaces relativos se determinan en relación con el lugar donde los especificadores de enlaces relativos se encuentran en una ruta específica.
Los enlaces simbólicos absolutos pueden apuntar a archivos / directorios en el mismo o diferente volumen, así como a un archivo o directorio remoto utilizando la ruta UNC. Sin embargo, los enlaces simbólicos relativos están restringidos a un solo volumen.
Se requieren privilegios elevados para crear un enlace simbólico, aunque una vez creados no se requieren privilegios elevados para eliminar el enlace.
Enlaces duros : un enlace duro es la representación del sistema de archivos de un archivo mediante el cual más de una ruta hace referencia a un solo archivo.
MKLINK
permite crear enlaces duros (usando el /H
parámetro) solo de archivos (no directorios). Solo se puede crear un enlace duro de un archivo en el mismo volumen.
Un archivo con múltiples enlaces duros solo se elimina realmente cuando se eliminan todos los enlaces duros, es decir, el recuento de enlaces llega a cero. Así que, realmente, cada archivo que cree tiene al menos un enlace rígido, lo use MKLINK
o no.
Cualquier cambio en ese archivo es instantáneamente visible para las aplicaciones que acceden a él a través de los enlaces duros que lo referencian. Sin embargo, el tamaño de la entrada del directorio y la información del atributo se actualiza solo para el enlace a través del cual se realizó el cambio.
Tenga en cuenta que los atributos en el archivo se reflejan en cada enlace duro a ese archivo, y los cambios en los atributos de ese archivo se propagan a todos los enlaces duros. Por ejemplo, si anula la configuración del atributo de solo lectura en un enlace duro para eliminar ese enlace duro en particular, y hay varios enlaces duros al archivo real, entonces deberá volver a configurar el atributo de solo lectura en el archivo desde uno de los enlaces duros restantes para devolver el archivo y todos los enlaces duros restantes al estado de solo lectura.
Uniones : Una unión (también denominado enlace dinámico) se diferencia de un enlace duro en el que los objetos de almacenamiento de los que hace referencia son directorios separados, y una unión puede vincular directorios ubicados en diferentes volúmenes locales en el mismo equipo. De lo contrario, las uniones operan de manera idéntica a los enlaces duros. Las uniones se implementan a través de puntos de análisis.
MKLINK
permite crear una unión (usando el /J
parámetro) de un directorio (e incluso de archivos, aunque esto probablemente debería considerarse como un enlace no válido).
Una unión podría considerarse como el enlace duro equivalente para un enlace simbólico a un directorio. No se puede crear un enlace de unión a un directorio remoto, pero se puede crear a un directorio en el mismo volumen / diferente.
Referencias
[1] Enlaces y enlaces duros: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx
[2] Creación de enlaces simbólicos: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx
[3] "unión de directorio" vs "enlace simbólico de directorio"?
El enlace duro es solo otro nombre para un archivo. Si tiene un archivo llamado A.txt y tiene un enlace L.txt, una vez que elimine A.txt, seguirá teniendo acceso a sus datos a través de L.txt. Solo cuando ambos archivos eliminados desaparece.
Por otro lado, tiene un llamado enlace suave (unión si es carpeta o enlace simbólico si es archivo). En ese caso, cuando elimine A.txt, el archivo realmente desaparecerá. Eliminar L.txt no tiene ningún efecto en el archivo.
Los enlaces duros solo se pueden usar en la misma partición que el archivo de origen y los enlaces blandos se pueden usar en todas las particiones.
El archivo y la carpeta PS son en su mayoría intercambiables en lo que respecta a NTFS.
Enlace duro: solo funciona para el mismo volumen.
Unión: cualquier volumen local
Simbólico: volumen local o ruta UNC
| Link Type | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link | Yes | No | No |
| Junction | Yes | Yes | No |
| Symbolic link | Yes | Yes | Yes |
Chatter de bonificación
Windows crea uniones y enlaces simbólicos para fines de AppCompat; para esas aplicaciones mal escritas que piensan:
son validos.
C:\Users>dir /as
Directory of C:\Users
04/11/2018 07:45 PM <SYMLINKD> All Users [C:\ProgramData]
04/11/2018 07:45 PM <JUNCTION> Default User [C:\Users\Default]
Lo mismo es cierto en la carpeta de perfil del usuario, para aplicaciones que esperan que las carpetas de la era de Windows XP aún existan hoy:
| Folder | Type | Target |
|------------------|------------|------------------------------------------------------------------| | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming |
| Cookies | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies |
| Local Settings | <JUNCTION> | C:\Users\Ian\AppData\Local |
| My Documents | <JUNCTION> | C:\Users\Ian\Documents |
| NetHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent |
| SendTo | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo |
| Start Menu | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu |
| Templates | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates |
Para responder mediante programación:
Enlace duro: shared_ptr <>. Siempre existe uno.
Enlace suave: débil_ptr <>. Solo válido cuando existe otro enlace duro.