
¿Cuál es la diferencia entre un enlace simbólico y un acceso directo?
Respuesta1
Creo que el punto importante es que los accesos directos son sólo un archivo. Tienen un tamaño (uno pequeño, que solo hace referencia a donde apuntan) y requieren una aplicación que admita ese tipo de archivo para poder usarse.
Un enlace simbólico está a nivel del sistema de archivos y todo lo ve.comoel archivo original. Una aplicación no necesita soporte especial para utilizar un enlace simbólico.
Respuesta2
Un "enlace simbólico" en realidad puede actuar como un sustituto de un directorio o archivo de manera funcional, y se usa comúnmente en entornos Unix/Linux. Aunque aparentemente hay soporte para esto en Windows, todavía no he visto ningún uso real.
Un "acceso directo" es simplemente un archivo normal que tiene una referencia al archivo o directorio de destino junto con algunas otras cosas como el ícono que se mostrará. A diferencia de un enlace simbólico, no puede "cd ./shortcut-name" en DOS (en Unix/Linux puede "cd ./symlink-name" y funcionará como un subdirectorio real).
Además, en la mayoría de las aplicaciones de Windows, cuando hace clic en un acceso directo en cualquier diálogo Archivo->Abrir GUI, el campo de nombre de archivo se completa con el nombre de archivo de ese acceso directo y actúa como un subdirectorio, mientras que en Unix/Linux la GUI trata un Enlace Simbólico como ruta (sin modificar el campo de nombre de archivo).
Respuesta3
Como otros han mencionado, un enlace simbólico es uno de los tipos de enlaces disponibles a nivel del sistema de archivos, lo que lo hace transparente para las aplicaciones. He encontradoesta documentaciónmuy útil (especialmente la sección "Recortar/Desenrollar/Uniones exteriores/Enlaces simbólicos"). Y la herramienta allí también se ve bien. (Al mencionar esto y mklink, es de esperar que más búsquedas encuentren esta discusión).
Un acceso directo es un archivo, no un vínculo real, y generalmente solo se sigue con éxito como vínculo cuando lo interpreta la interfaz de usuario (UI) de Windows. Por ejemplo, cuando haces doble clic en un acceso directo a una carpeta, Windows te redirige a esa otra ubicación. (Esto incluye los cuadros de diálogo genéricos Abrir archivo y Guardar archivo que invocan la mayoría de las aplicaciones). En mi escritorio, tengo un acceso directo a esta carpeta: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\G
El nombre de archivo del acceso directo es: C:\Users\user5\Desktop\Games.lnk, aunque Windows suprime la extensión .lnk y solo muestra "Juegos", incluso si desmarca "ocultar extensiones para tipos de archivos conocidos". Pero si abres un símbolo del sistema y creas un directorio, lo verás:
C:\Users\user5\Desktop>dir "g*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/08/2014 05:30 PM 1,710 Games.lnk
1 File(s) 1,710 bytes
0 Dir(s) 246,818,222,080 bytes free
Puedo crear el equivalente con un enlace simbólico usando la opción \D (para directorio):
C:\Users\user5\Desktop>mklink /D mysymlink "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G
C:\Users\user5\Desktop>cd mysymlink
C:\Users\user5\Desktop\mysymlink>
(Una unión de directorio (\J) también es una opción, ya que se trata de un enlace de carpeta). El explorador de Windows, al igual que esta consola y la mayoría de las aplicaciones, le permitirá navegar "hacia abajo" en este aparente subdirectorio, en lugar de (a) redirigir "a través" a una ubicación diferente o (b) en su defecto.
Los accesos directos no se comportan como subdirectorios. Puedo invocar el comportamiento de archivo predeterminado de la interfaz de usuario de Windows con este comando (esto abre la carpeta "G" en el Explorador de Windows):
C:\Users\user5\Desktop>"Games.lnk"
Mientras que mysymlink aparece (ver el recuento) como un subdirectorio verdadero y no se puede iniciar de esa manera:
C:\Users\user5\Desktop>dir "my*"
Volume in drive C has no label.
Volume Serial Number is 900...
Directory of C:\Users\user5\Desktop
03/29/2014 06:08 PM <DIR> mysubdir
03/29/2014 05:40 PM <SYMLINKD> mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
0 File(s) 0 bytes
2 Dir(s) 246,816,153,600 bytes free
C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.
Por el contrario, no puedes cambiar el directorio a un acceso directo:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
La interfaz de usuario de Windows le permite hacer clic derecho para editar las propiedades de un acceso directo. O bien, lo siguiente muestra exactamente lo que realmente se almacena en el archivo .lnk (datos binarios), aunque un editor hexadecimal se mostraría mejor:
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Mientras que al intentar ejecutar el Bloc de notas en una subcarpeta real, aparece un mensaje de error "Acceso denegado" y un Bloc de notas vacío.
Por el contrario, si hago un enlace simbólico a un archivo (no un enlace simbólico a una carpeta), puedo ejecutarlo con el Bloc de notas. De las siguientes llamadas a notepad.exe, las dos primeras funcionan y la tercera falla (abre el archivo .LNK, el galimatías binario).
C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt
C:\Users\user5\Desktop>notepad.exe "symplain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt"
C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"
Esto no es sólo una cosa de la consola. Al copiar un acceso directo al Bloc de notas en mi escritorio e intentar arrastrar y soltar cada uno de los tres en él, se muestra exactamente el mismo comportamiento. (Porque arrastrar y soltar, a diferencia de hacer doble clic, permite que la aplicación interprete el acceso directo).
Con respecto a las diferencias entre enlaces simbólicos de directorio y uniones, consulteesta discusión, y aquí hay una muydescripción útil:
"Una diferencia importante en la forma en que Windows resuelve enlaces simbólicos y uniones de directorios es dónde tiene lugar el procesamiento. Windows procesa enlaces simbólicos en el sistema local, incluso cuando hacen referencia a una ubicación en un servidor de archivos remoto. Windows procesa uniones de directorios que hacen referencia a un servidor remoto. servidor de archivos en el servidor mismo. Por lo tanto, los enlaces simbólicos en un servidor pueden hacer referencia a ubicaciones a las que sólo se puede acceder desde un cliente, como otros volúmenes de cliente, mientras que las uniones de directorios no pueden hacerlo. Para solucionar este problema, Windows Vista admite el nuevo tipo de enlace simbólico para ambos archivos. y directorios.
"Muchos comandos del sistema de archivos se han actualizado para comprender las implicaciones de los enlaces simbólicos. Por ejemplo, el comando Eliminar sabe que no debe seguir los enlaces, lo que daría como resultado la eliminación del destino, sino que elimina el enlace. Sin embargo, debido a que no todas las aplicaciones puede manejar enlaces simbólicos correctamente, crear un enlace simbólico requiere el nuevo privilegio Crear enlace simbólico que solo los administradores tienen de forma predeterminada".
Respuesta4
A veces es bueno tener un ejemplo funcional, así que explicaré cómo uso esta función.
Utilizo Google Drive para hacer copias de seguridad de archivos, pero a veces quiero hacer copias de seguridad de archivos en una carpeta específica (no puedo moverlos a ../google Drive). Especialmente con las aplicaciones universales de Windows 10, los archivos de configuración y demás se almacenan en appdata, y la mayoría de las veces no puedo cambiar esta ubicación.
Utilizo la aplicación stikynot nativa de Windows y quería hacer una copia de seguridad de mis notas, así que utilicé un enlace simbólico aquí. Google Drive reconoce el enlace como un archivo real y sincroniza los archivos perfectamente, mientras que el archivo real todavía está en la carpeta appdata.
Cuando tengo archivos como carpetas de proyectos localmente que no quiero sincronizar con la nube, uso accesos directos (copiar, pegar->pegar acceso directo).