En el contexto de NTFS:
MKLINK [[/D] | [/H] | [/J]] Objetivo del enlace
/D
Crea un enlace simbólico de directorio. Por defecto es un enlace simbólico de archivo.
/H
Crea un enlace duro en lugar de un enlace simbólico.
/J
Crea un enlace de directorio.
Enlace
especifica el nombre del nuevo enlace simbólico.
Target
especifica la ruta (relativa o absoluta) a la que se refiere el nuevo enlace.
¿Cuál es la diferencia entre mklink /D f1 f2
y mklink /J f1 f2
?
Un junction no es definitivamente lo mismo que un enlace simbólico de directorio, aunque se comportan de manera similar. La principal diferencia es que, si se trata de un servidor remoto, los junctions se procesan en el servidor y los enlaces simbólicos de directorio se procesan en el cliente. Vea también el comentario de Matthew sobre el hecho de que esto significa que los enlaces simbólicos en el sistema de archivos local pueden apuntar a sistemas de archivos remotos.
Supongamos que en una máquina llamada Alice usted pone un punto de unión c:\myjp
y un enlace simbólico de directorio c:\mysymlink
, ambos apuntando a c:\targetfolder
. Mientras estés usando Alice no notarás mucha diferencia entre ellos. Pero si usted'está usando otra máquina llamada Bob, entonces el punto de unión
\\Alice\c$\myjp
apuntará a \Alice\c$\targetfolder
.
pero el enlace simbólico
\Alice\c$\mysymlink
apuntará a \Bob\c$\targetfolder
.
(Advertencia: por defecto, el sistema no sigue los enlaces simbólicos en volúmenes remotos, por lo que en la mayoría de los casos el segundo ejemplo dará como resultado "Archivo no encontrado" o *"El enlace simbólico no puede seguirse porque su tipo está desactivado.")
La diferencia entre un enlace simbólico de directorio y un enlace simbólico de archivo es simplemente que uno representa un directorio y el otro un archivo. Dado que el objetivo del enlace no tiene por qué existir cuando se crea el enlace, el sistema de archivos necesita saber si debe indicar a las aplicaciones que se trata de un directorio o no.
También hay que tener en cuenta que la creación de un enlace simbólico requiere un privilegio especial (por defecto, sólo disponible para los procesos elevados) mientras que la creación de una unión sólo requiere acceso al sistema de archivos.
Las conversaciones complejas hacen daño al cerebro... Me gustan los gráficos:
Asume que cualquier MyLink
es un enlace simbólico y cualquier MyJunc
es una unión que apunta a Target as created
.
Por ejemplo
mklink /D MyLink C:\T_Dir
para crear un enlace simbólico al directorio de destino
mklink /J MyJunc C:\T_Dir
para crear una unión de directorios con el directorio de destino
Donde la sintaxis es mklink [/J,/D] [ruta de enlace] [ruta de destino]
como se escribe en la máquina local
link path | target path | When accessed ..
| | (locally) | (remotely)
| | |
C:\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
C:\MyJunc | C:\T_Dir | C:\T_Dir | [leads to remote]
| |
\\Svr\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
\\Svr\MyJunc | C:\T_Dir | *** Must create and point local ***
| |
C:\MyLink | \\Sv2\T_Dir | \\Sv2\T_Dir | Error*1
C:\MyJunc | \\Sv2\T_Dir | *** Error - Must point local ***
| |
\\Svr\MyLink | \\Sv2\T_Dir | Error*1
\\Svr\MyJunc | \\Sv2\T_Dir | *** Must create link using target device ***
Error*1 - Si usted desbloquea el acceso a los enlaces simbólicos remotos en su máquina local, entonces esto funcionaría .. pero sólo en la máquina local donde está desbloqueado
Los enlaces simbólicos tienen más funcionalidad, mientras que los empalmes casi parecen una característica heredada debido a sus limitaciones, pero las implicaciones de seguridad de estas limitaciones son específicamente la razón por la que se podría preferir un empalme sobre un enlace simbólico. La orientación remota hace que los enlaces simbólicos sean más funcionales, pero también eleva su perfil de seguridad, mientras que los cruces podrían considerarse más seguros porque están limitados a rutas locales. Así que, si quieres un enlace local y puedes vivir con una ruta absoluta, probablemente estés mejor con un enlace; de lo contrario, considera un enlace simbólico por sus habilidades adicionales.
**La afirmación de la diferencia en velocidad/complejidad proviene de una afirmación no verificada en la entrada de Wikipedia sobre puntos de reparación de NTFS (una buena lectura).
Otras comparaciones de enlaces NTFS
Aquí hay otras comparaciones sobre el tema, pero éstas pueden ser engañosas al considerar los enlaces porque no enumeran los beneficios que enumero arriba.
Tomado de aquí (una buena lectura introductoria)
[]
De la página de SS64 en MKLink
[]
Comentarios sobre la terminología
*Las funciones son enlaces simbólicos
Las uniones y los enlaces simbólicos realmente hacen lo mismo de la misma manera (repartir puntos), aparte de las diferencias mencionadas en cómo se procesan. De hecho, técnicamente, un Junction es un enlace simbólico, y a veces la documentación puede llamar a un Junction un enlace simbólico, como es el caso aquí. Así que, esto es algo que hay que tener en cuenta con respecto a la terminología.
NTFS
Aunque el OP lo especifica, vale la pena señalar que "enlace simbólico" es un término muy general que no es específico de NTFS. Así que, para ser específicos, esta comparación es sobre NTFS Junctions vs. NTFS Symbolic Links.