¿Cuál es la diferencia entre los enlaces duros NTFS y las uniones de directorio?

79

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.

Vilx-
fuente
2
De acuerdo con la documentación de Microsoft, hay tres categorías distintas: Enlace duro: msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Unión (enlace suave): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Enlace simbólico: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx .
Josip Medved el

Respuestas:

33

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).

Forethinker
fuente
1
¿Funciona el enlace simbólico en el nivel del disco duro (NTFS) o en el concepto de nivel del sistema operativo Windows?
IsmailS
48

Definiciones rápidas:

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.


Detalles:

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).

  • MKLINKse puede usar para crear enlaces simbólicos. El uso del /Dpará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.

  • MKLINKpermite crear enlaces duros (usando el /Hpará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 MKLINKo 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.

  • MKLINKpermite crear una unión (usando el /Jpará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"?

mugir
fuente
9

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.

Josip Medved
fuente
3
Lo sentimos, las uniones y los enlaces blandos no son lo mismo para NTFS. :(
Vilx-
2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx Cita: "Una unión (también llamada enlace flexible)"
Josip Medved el
3
Sin embargo, hay una mayor distinción entre la unión (también conocido como enlace suave) y el enlace simbólico, pero no he entrado en detalles aquí. Para aquellos interesados, los detalles se pueden encontrar en la documentación de Windows en msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx y msdn.microsoft.com/en-us/library/aa363878%28VS. 85% 29.aspx .
Josip Medved el
1
Desde Windows Vista, hay uniones NTFS (solo pueden apuntar a directorios) y enlaces simbólicos de estilo Unix (pueden apuntar literalmente a cualquier cosa).
Grawity
0

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:

  • C: \ Usuarios \ Todos los usuarios
  • C: \ Usuarios \ Usuario predeterminado

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         |
Ian Boyd
fuente
2
y se vuelve aún más loco en las instalaciones de Windows que no están en inglés, ya que luego obtienes MÁS enlaces simbólicos / uniones, ya que algunos pueden o no saber que Windows hasta XP en realidad tenía nombres de directorios locales, lo que puede confundir fácilmente los scripts o tutoriales creados para otros idiomas. Vista eliminó eso y en su lugar usa nombres de PANTALLA localizados, por lo que las rutas reales son las mismas en todos los idiomas, pero debido a que las ventanas localizadas tienen aún más enlaces en ellas que las
inglesas
-1

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.

Michael Chourdakis
fuente
Esa es la fácil. :) La pregunta era sobre enlaces duros vs cruces. ;)
Vilx-