Introducción
Windows 2000 y superior admite enlaces simbólicos de directorio, donde un directorio sirve como un enlace simbólico a otro directorio en la computadora. Por ejemplo, si el directorio D: \ SYMLINK especifica C: \ WINNT \ SYSTEM32 como su objetivo, entonces una aplicación que acceda a D: \ SYMLINK \ DRIVERS en realidad estaría accediendo a C: \ WINNT \ SYSTEM32 \ DRIVERS. Los enlaces simbólicos de directorio se conocen como uniones NTFS en Windows. Desafortunadamente, Windows no tiene herramientas para crear uniones: debe comprar el Kit de recursos de Win2K, que viene con el programa vinculado para crear uniones. Por lo tanto, decidí escribir mi propia herramienta para crear uniones: Junction. La unión no solo le permite crear uniones NTFS, sino que también le permite ver si los archivos o directorios son realmente puntos de análisis. Los puntos de análisis son el mecanismo en el que se basan las uniones NTFS,
Lea este artículo de Microsoft KB para obtener sugerencias sobre el uso de uniones.
Tenga en cuenta que Windows no admite uniones a directorios en recursos compartidos remotos.
Si desea ver información de análisis, el uso de Junction es el siguiente:
Usando Junction
Use la unión para enumerar las uniones:
Uso: [-s]
-s Subdirectorios recurrentes
Ejemplos:
Para determinar si un archivo es una unión, especifique el nombre del archivo:
unión c: \ prueba
Para enumerar uniones debajo de un directorio, incluya el modificador –s:
unión -sc: \
Para crear una unión c: \ Archivos de programa para "c: \ Archivos de programa":
C:> Archivos de programa md
C:> unión c: \ Archivos de programa "c: \ Archivos de programa"
Para eliminar una unión, use el modificador –d:
unión -dc: \ Archivos de programa
No necesariamente necesita descargar programas adicionales para enumerar uniones, enlaces simbólicos y enlaces duros, pero si tiene requisitos de formato de salida específicos, pueden ayudar.
Enumere todas las uniones, enlaces simbólicos y directorios de enlaces simbólicos en el directorio actual y sus subdirectorios:
O si quieres que se enumeren por separado ...
Enumere todas las uniones en el directorio actual y sus subdirectorios:
Lista todos los enlaces simbólicos en el directorio actual y sus subdirectorios:
Enumere todos los directorios de enlaces simbólicos en el directorio actual y sus subdirectorios:
El
l
indicador de atributo es clave aquí;l
es paraReparse Points
(uniones, enlaces simbólicos y directorios de enlaces simbólicos)Enlaces duros
Desafortunadamente,
dir
enumera los enlaces duros como archivos normales, por lo que no puede usarlos para identificar enlaces duros. Puedes usar el incorporado en sufsutil
lugar. Debe ejecutarse desde un símbolo del sistema elevado.Con
fsutil
, enumere todos los enlaces duros en el directorio actual y sus subdirectorios:Este one-liner no es ideal, y agradecería cualquier mejora.
forfiles
con la opción de subdirectorios recurse (/s
) martilló mi CPU y tardé un tiempo en completarse.fsutil
básicamente termina corriendo dos veces; la primera vez para identificar los enlaces duros contando el número de líneas de salida devueltas por cada llamada, y la segunda vez en los enlaces duros recién encontrados para obtener la salida correcta.uniq
.Aquí hay un archivo por lotes que se usa solo
for
para identificar enlaces duros. Comoforfiles
no está involucrado, puede ser un poco más rápido, sin embargo, todavía sufre las advertencias restantes de la línea anterior.Hay algunas otras opciones (no probadas):
Use la utilidad (antigua) Microsoft HL Scan
Use el comando find alternativo que viene con el kit de herramientas de utilidad SFUA de Microsoft:
Utilice la utilidad findlinks de Sysinternals de una manera similar a la
fsutil
mencionada anteriormenteUse el programa ListLinks de Uwe Sieber - vea el enlace para el uso
El uso de Nirsoft NTFSLinksView Si prefiere una aplicación GUI
fuente
A partir de Powershell 5+, el siguiente one-liner enumera recursivamente todos los enlaces duros de archivos, uniones de directorio y enlaces simbólicos y sus objetivos a partir de
d:\Temp\
:Salida:
Si le interesan los objetivos múltiples para enlaces duros, use esta variación que enumera los objetivos separados por tabuladores:
Es posible que necesite privilegios de administrador para ejecutar este script en say
C:\
.Para ejecutar estos scripts desde la línea de comandos tradicional (cmd.exe):
Por ejemplo:
fuente
dir 'd:\Temp' -recurse -force | ?{$_.LinkType -eq "Junction"} | select FullName,LinkType,Target
LinkType
no parece ser confiable para puntos de análisis. Por ejemplo, en mi computadora que ejecuta W10 con PS 5.1,LinkType
es nulo tanto para "C: \ ProgramData \ Desktop" como para "C: \ Users \ All Users", mientras quedir /aL
(Símbolo del sistema, no PowerShell) indica que el primero es un punto de unión y el segundo un enlace simbólico.Los enlaces duros se describen mejor como anteriormente, pero para enlaces simbólicos y uniones, lo siguiente funciona muy bien:
No estoy usando ningún comando nuevo aquí, sin embargo, mejora algunos de los enumerados al mostrarle una buena lista de cada enlace encontrado, en la ruta, es tipo (SymLink / Junction) y tanto la ruta de enlace como la ruta de destino.
Hay algunos buenos arriba, pero solo le dan la ruta OBJETIVO, y generalmente desea eliminar el enlace, y no el objetivo, o correlacionar todos los enlaces y objetivos.
Para obtener el Tipo, Enlace y Destino, puede usar lo siguiente en CMD:
Salida de ejemplo:
fuente
Far Manager 3.0 puede buscar y mostrar enlaces simbólicos y puntos de unión como diferentes de archivos y directorios. (Puede hacer muchas otras cosas). También puede buscar enlaces duros.
ALT+ F7=> [x] Usar filtro => Filt er =>Ins
Elige los atributos que quieras.
fuente
LinkMagic2.exe (lista de conexiones mágica) también es bueno.
c:\user
Borré por error todos mis enlaces de Junction, como printhood, nethood y datos de la aplicación cuando instalé Windows 7 por primera vez hace 2 años porque pensé que la instalación los colocó por error. Para lo que realmente son es la compatibilidad con versiones anteriores, y mientras busco en Internet veo que algunos se han tenido problemas para tratar de hacer ciertas cosas sin estos puntos de unión.fuente