¿Cuál es la diferencia entre Enlace simbólico y Acceso directo?

Respuestas:

57

Creo que el punto importante es que los accesos directos son solo un archivo. Tienen un tamaño (uno pequeño, que solo hace referencia a dónde apuntan) y requieren una aplicación que admita ese tipo de archivo para poder usarse.

Un enlace simbólico es el nivel del sistema de archivos, y todo lo ve como el archivo original. Una aplicación no necesita soporte especial para usar un enlace simbólico.

Phoshi
fuente
66
Árbol comandos para caminar (en nada a las utilidades de Unix find, tar, du, etc) no necesita saber acerca de los vínculos simbólicos o pueden hacer algunas cosas muy estúpidas. Por ejemplo cegadora siguientes enlaces simbólicos pueden crear ciclos en el sistema de archivos, y eso es malo .
dmckee
99
@dmckee; Muy buen punto, mientras que ninguna aplicación necesita soporte específico para seguirlos, ¡sí necesitan soporte específico para no seguirlos!
Phoshi
Sí, no necesito ayuda para usarlos , pero sí necesito saber sobre ellos.
dmckee
@Phoshi ¿Qué quiere decir exactamente con "y requieren una aplicación que admita ese tipo de archivo para poder usarlo". ¿Puedes explicar con un ejemplo?
Geek
77
@ Geek: Un "acceso directo" es efectivamente un archivo que contiene la ruta de acceso de otro archivo. Cuando lo lees, lees un archivo con formato especial que te dice dónde buscar a continuación. Si su aplicación no escucha, y simplemente lee el archivo textualmente, entonces no lo sigue. Un enlace simbólico es a nivel de sistema de archivos, es el propio sistema de archivos el que mantiene la ruta "verdadera" a los datos y cuando intenta acceder a ellos, recupera los datos apuntados.
Phoshi
20

Un "Enlace simbólico" en realidad puede actuar como un sustituto de un directorio o archivo de una 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 solo un archivo normal que tiene una referencia al archivo o directorio de destino junto con algunas otras cosas como el icono 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, su campo de nombre de archivo se llena 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 del nombre de archivo).

Randolf Richardson
fuente
En Unix / Linux también hay "enlaces duros" que solo se aplican a los archivos (no a los directorios). Estas son entradas de nombre de archivo naturales en el sistema de archivos que solo apuntan a los mismos datos de archivo que otra entrada de nombre de archivo en otro lugar (no tiene que estar en el mismo directorio).
Randolf Richardson
44
@Randolf: 1) También existen enlaces duros en Windows. 2) Una característica de los accesos directos de shell es el seguimiento automático de objetivos: si el objetivo se mueve, la mayoría de las veces los accesos directos seguirán funcionando. (En un dominio AD, incluso es posible rastrear archivos a través de computadoras; por ejemplo, si mueve un HD a otro lugar). 3) Un uso de enlaces simbólicos es redirigir un archivo o directorio a una ubicación alternativa; pueden apuntar a archivos (a diferencia de las uniones ) y directorios (a diferencia de los enlaces duros), sistemas de archivos cruzados (a diferencia de los enlaces duros) y, AFAIK, incluso pueden apuntar a ubicaciones de red.
Grawity
Comentario tardío, y no estoy seguro si no sé qué estoy haciendo con los accesos directos, pero tuve que crear un enlace simbólico en lugar de un acceso directo para mi archivo vimrc (hago referencia a un proyecto de archivos de puntos que utilizo en un directorio separado)
making3
11

Como otros han mencionado, un enlace simbólico es uno de los tipos de enlaces disponibles en el nivel del sistema de archivos, lo que lo hace transparente para las aplicaciones. He encontrado esta documentación muy útil (especialmente la sección "Recortar / Desenrollar / Empalmar uniones externas / Enlaces simbólicos"). Y la herramienta allí también se ve bien. (Al mencionar esto y mklink, espero que más búsquedas encuentren esta discusión).

Un acceso directo es un archivo, no un enlace real, y generalmente solo se sigue con éxito como un enlace cuando la interfaz de usuario (interfaz de usuario) de Windows lo interpreta. Por ejemplo, cuando hace doble clic en el acceso directo de una carpeta, Windows lo 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 shorcut 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 abre un símbolo del sistema y hace un directorio, lo verá:

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 el 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 este es 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 subdirectorio aparente, en lugar de (a) redirigir "cruzado" a una ubicación diferente o (b) fallando.

Los atajos no se comportan como subdirectorios. Puedo invocar el comportamiento del archivo predeterminado de la IU 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 en la lista (ver el recuento) como un verdadero subdirectorio 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 puede cambiar el directorio en un acceso directo:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

La IU de Windows le permite hacer clic con el botón derecho para editar las propiedades de un acceso directo. O, lo siguiente muestra exactamente lo que está realmente almacenado en el archivo .lnk (datos binarios), aunque un editor hexadecimal se verí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 de archivo (no un enlace simbólico de carpeta), puedo iniciarlo 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 binario gobbledegook).

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 solo una cosa de consola. Al copiar un acceso directo al Bloc de notas en mi escritorio e intentar arrastrar y soltar cada uno de los tres, muestra exactamente el mismo comportamiento. (Debido a que arrastrar y soltar, a diferencia del doble clic, permite que la aplicación interprete el acceso directo).

Con respecto a las diferencias entre enlaces simbólicos y uniones de directorio, vea esta discusión , y aquí hay una descripción muy útil :

"Una diferencia importante en la forma en que Windows resuelve enlaces simbólicos y uniones de directorio es donde 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 directorio que hacen referencia a un control remoto servidor de archivos en el servidor en sí. Por lo tanto, los enlaces simbólicos en un servidor pueden referirse a ubicaciones a las que solo se puede acceder desde un cliente, como otros volúmenes de clientes, mientras que las uniones de directorio no. Para solucionar esto, 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 eliminar el enlace. Sin embargo, porque 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 por defecto ".

Jon Coombs
fuente
2

"Los enlaces simbólicos difieren de los accesos directos en que ofrecen una ruta transparente * al objeto de datos deseado, con un acceso directo (.lnk), algo tiene que leer e interpretar el contenido del archivo de acceso directo y luego abrir el archivo al que hace referencia (es decir, es un proceso de dos pasos). Cuando una aplicación usa un enlace simbólico, obtiene acceso inmediato al objeto de datos al que hace referencia el enlace simbólico (es decir, es un proceso de un paso) ".

Fuente: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

ariefcfa
fuente
0

A veces es bueno tener un ejemplo funcional, así que explicaré cómo uso esta función.

Uso Google Drive para hacer una copia de seguridad de los archivos, pero a veces quiero hacer una copia de seguridad de los 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 los datos de aplicación, 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 de datos de aplicación.

Cuando tengo archivos como carpetas de proyectos localmente que no quiero sincronizar con la nube, uso accesos directos (copiar, pegar-> pegar acceso directo).

sommmen
fuente