413 votos

¿"unión de directorios" vs "enlace simbólico de directorios"?

MKLINK [[/D] | [/H] | [/J]] Link Target

/D Crea un enlace simbólico de directorio. Por defecto es un enlace simbólico de archivo.
/H Crea un vínculo duro en lugar de un vínculo simbólico.
/J Crea una unión de directorios.
Link especifica el nuevo nombre del enlace simbólico.
Target especifica el camino (relativo o absoluto) al que se refiere el nuevo enlace.

  1. ¿No es un unión de directorios exactamente lo mismo que un enlace simbólico del directorio ?

    ¿Cuál es la diferencia entre mklink /D f1 f2 y mklink /J f1 f2 ?

  2. Ya que un "directorio" es en realidad sólo un archivo ¿cuál sería la diferencia entre un enlace simbólico de directorio y un enlace simbólico de archivo?

383voto

David Maitland Puntos 63

Una unión 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, las uniones se procesan en el servidor y los enlaces simbólicos del directorio se procesan en el cliente. Véase 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.

Suponga que en una máquina llamada Alice usted pusiera un punto de unión c:\myjp y un enlace simbólico del directorio c:\mysymlink ambos apuntando a c:\targetfolder . Mientras estés usando a Alice no notarás mucha diferencia entre ellas. Pero si estás usando otra máquina llamada Bob, entonces

\\Alice\c$\myjp -> \\Alice\c$\targetfolder

pero

\\Alice\c$\mysymlink -> \\Bob\c$\targetfolder .

(Advertencia: por defecto, el sistema no sigue los enlaces simbólicos en los volúmenes remotos, por lo que en la mayoría de los casos el segundo ejemplo dará lugar en realidad a "Archivo no encontrado" o "El vínculo 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 otro representa 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 decirle a las aplicaciones que es un directorio o no.

Cabe señalar también 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 un enlace sólo requiere el acceso al sistema de archivos.

65voto

Okuma.Tony Puntos 174

La charla compleja daña el cerebro me gustan los gráficos:

Supongamos que cualquier MyLink es un vínculo simbólico y cualquier MyJunc es una unión que apunta a Target as created .

por ejemplo. mklink /D C:\MyLink C:\MyDir para la primera fila


What you type |Target as created| What's delivered  | What you wanted
  (local)     |    (local)      |    (local)        |    (local)
C:\MyLink     |  C:\MyDir       |  C:\MyDir         |  C:\MyDir
C:\MyJunc     |  C:\MyDir       |  C:\MyDir         |  C:\MyDir
              |                 |                   |
  (remote)    |    (local)      |   (error/local)   |    (remote)
\\Svr\MyLink  |  C:\MyDir       |  ERROR(C:\MyDir)  |  \\Svr\C\MyDir
  (remote)    |    (local)      |    (remote)       |    (remote)
\\Svr\MyJunc  |  C:\MyDir       |  \\Svr\C\MyDirr   |  \\Svr\C\MyDir
              |                 |                   |
  (local)     |    (remote)     |    (remote)       |    (remote)
C:\MyLink     |  \\Sv2\MyDir    |  \\Sv2\MyDir      |  \\Sv2\MyDir
  (local)     |    (remote)     |    (impossible)
C:\MyJunc     |  \\Sv2\MyDir    |  *** Can't be done - Must point local ***
              |                 |                   |
  (remote)    |    (remote)     |    (maybe?)       |    (remote)
\\Svr\MyLink  |  \\Sv2\MyDir    |  Error*1          |  \\Sv2\MyDir
  (remote)    |    (remote)     |    (impossible)
\\Svr\MyJunc  |  \\Sv2\MyDir    |  *** Can't be done - Must point local ***

Error*1 - actually, if you unblocked access to remote symbolic links, then this would work ... I think

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: