Creación de enlaces simbólicos (Symlinks) en Windows

Un enlace simbólico (Symlink) es un archivo especial en un sistema de archivos que no contiene ningún dato, pero en realidad es un acceso directo que apunta a otro objeto (archivo o carpeta). Al acceder a un enlace simbólico, el sistema operativo piensa que es un archivo (carpeta) original y trabaja con él de forma completamente transparente.

Los enlaces simbólicos se usan con bastante frecuencia en Windows para archivos y directorios del sistema. Puede usarlos cuando necesite mover archivos grandes a otro disco y Windows debe considerar que aún están ubicados en el directorio original (por ejemplo, cuando desea ahorrar espacio en un SSD moviendo algunos directorios a un HDD más lento y más grande). sin interrumpir los programas). Puede usar enlaces simbólicos en su servidor de archivos SMB cuando los directorios ubicados en diferentes LUN deben estar disponibles en un único punto de entrada.

Los tres tipos de enlaces de archivo disponibles en Windows para volúmenes NTFS: enlaces duros, enlaces suaves (enlaces simbólicos) y puntos de unión.

  • Enlaces duros solo puede apuntar a un archivo local, pero no a una carpeta. Un enlace fijo es un enlace de archivo a otro archivo en el mismo volumen sin duplicar el archivo. Tiene el mismo tamaño y propiedades que el archivo fuente (pero no ocupa espacio real en el disco);
  • Puntos de unión (Directory Hard Link) solo puede apuntar a un directorio (en el mismo volumen o en otro);
  • Enlaces simbólicos (enlace suave, enlace simbólico) puede apuntar a un archivo, carpeta o recurso compartido de red local en una computadora remota (mediante la ruta UNC). Se admiten rutas relativas.

En la mayoría de los casos, puede usar un enlace simbólico para la mayoría de las tareas cuando necesite crear una referencia a un objeto.

¿Cómo crear un enlace simbólico en Windows?

Para crear enlaces simbólicos o duros en Windows, puede utilizar el integrado mklink herramienta o PowerShell.

Comando mklink en Windows

mklink tiene una sintaxis simple. Para crear un enlace simbólico a un archivo, especifique el nombre del enlace y el objeto de destino al que desea que apunte. Puede establecer el tipo de vínculo: /D — un enlace simbólico (suave) a un directorio, /H – un enlace duro, /J – un punto de unión.

Para usar mklink para crear enlaces simbólicos, ejecute el símbolo del sistema como administrador. De lo contrario, cuando ejecute el comando, aparecerá el siguiente error: No tiene suficientes privilegios para realizar esta operación.

Si desea permitir que los usuarios que no son administradores creen enlaces simbólicos, agregue el grupo de usuarios a Crear enlaces simbólicos Opción GPO (Configuración de la computadora -> Configuración de ventana -> Configuración de seguridad -> Asignación de derechos de usuario en el editor de GPO). De forma predeterminada, solo se agrega a la política el grupo de administradores locales. Actualice la directiva de grupo local después de cambiar la configuración: gpupdate /force

GPO: permitir crear enlaces simbólicos

Cree un enlace simbólico al archivo notepad.exe en C:PS:

mklink C:PSnote.exe c:WindowsSystem32notepad.exe

Verá el siguiente mensaje:

symbolic link created for C:PSnote.exe <<===>> c:WindowsSystem32notepad.exe

Ahora puede usar el enlace simbólico note.exe para ejecutar notepad.exe.

Cree un enlace simbólico a otra carpeta en la misma unidad:

mklink /D "C:PSDownloads" "C:UsersuserDownloads"

Windows cmd: enlace simbólico creado para ...

Ahora, cuando abra la carpeta C:PSDownloads, verá el contenido del directorio al que se refiere.

crear enlace simbólico en la carpeta de Windows

Mostrar el contenido de C:PS:

dir c:ps

Como puede ver, los atributos de algunos archivos muestran que es un enlace simbólico (simlinkd). También se muestra el objeto al que se refieren. En el Explorador de archivos, los enlaces simbólicos se muestran como iconos de acceso directo y el objeto de destino al que apuntan se muestra en sus propiedades.

También puede crear un enlace simbólico en Windows usando PowerShell (en este ejemplo, uso rutas relativas para crear un enlace simbólico):

New-Item -ItemType SymbolicLink -Path ".testtmpfiles" -Target "..tmpfiles"

Crear enlace simbólico en Windows con PowerShell

Puede crear un enlace simbólico a una carpeta de red compartida en una computadora o servidor remoto. Especifique la dirección del recurso compartido de red en formato UNC.

mklink /D c:psshare \hq-fs01Share

Por ejemplo, conectemos el recurso compartido administrativo C$ en una computadora remota usando su dirección IP:

mklink /D c:remotePCserver1 \192.168.13.10C$

Si ve el siguiente error al acceder a un recurso compartido mediante un enlace simbólico:

The symbolic link cannot be followed because its type is disabled.

Verifique las formas permitidas de usar enlaces simbólicos en su computadora:

fsutil behavior query SymlinkEvaluation

Local to local symbolic links are enabled.
Local to remote symbolic links are enabled.
Remote to local symbolic links are disabled.
Remote to remote symbolic links are disabled.

consulta de comportamiento fsutil Enlace simbólicoEvaluación

Para habilitar enlaces simbólicos a recursos remotos, ejecute los siguientes comandos:

fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1

Puede trabajar con enlaces simbólicos de la misma manera que con los objetos ordinarios del sistema de archivos: muévalos, cámbieles el nombre o elimínelos. Windows cambiará automáticamente la configuración de los enlaces simbólicos para que apunten a los objetivos correctos.

Para eliminar enlaces simbólicos, se usan los comandos habituales (como lo hace con los archivos):

Del c:psnote.exe
RD c:psdownloads

¿Cómo encontrar todos los enlaces simbólicos en una unidad de Windows?

No hay herramientas integradas en Windows para ver y administrar todos los enlaces simbólicos en un disco.

Puede listar todos los enlaces simbólicos en un disco usando este comando:

dir /AL /S C: | find "SYMLINK"

  • /A – para mostrar archivos con L atributo (enlaces simbólicos)
  • /S –ejecutar el comando recursivamente para todas las subcarpetas
  • C: — especifique un nombre de unidad o ruta a una carpeta para buscar enlaces simbólicos

Cómo enumerar todos los enlaces simbólicos en el directorio o la unidad de Windows

También puede obtener una lista de todos los enlaces simbólicos en un disco usando PowerShell. Simplemente escanee todas las carpetas y encuentre objetos NTFS con el atributo ReparsePoint:

Get-ChildItem -Path C: -Force -Recurse -ErrorAction 'silentlycontinue' | Where { $_.Attributes -match "ReparsePoint"}

Artículos Interesantes