Tuesday, 4 November 2014

hard links symbolic link and Directory Junction in windows (ntfs)

Tuesday, 4 November 2014


hard links symbolic link and Directory Junction in windows (ntfs)

http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/
C:\Users\geek>mklink
Creates a symbolic link.

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

     /D      Creates a directory symbolic link.  Default is a file
             symbolic link.
     /H      Creates a hard link instead of a symbolic link.
     /J      Creates a Directory Junction.
     Link    specifies the new symbolic link name.
     Target  specifies the path (relative or absolute) that the new link
            refers to.


http://superuser.com/questions/67870/what-is-the-difference-between-ntfs-hard-links-and-directory-junctions

http://www.2brightsparks.com/resources/articles/NTFS-Hard-Links-Junctions-and-Symbolic-Links.pdf

http://msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa363878(v=vs.85).aspx


---> son un buen coñazo, difíciles de entender, sólo se pueden crear en volúmenes locales, ..

Algunos mensajes que me da:

J:\>MKLINK _symbolic_link normalizaNombres.xlsm
El dispositivo no admite vínculos simbólicos.

J:\>MKLINK /h _hard_link normalizaNombres.xlsm
Se requieren volúmenes NTFS locales para completar la operación.

J:\>



Monday, 16 February 2015

cd -directorio-vacio-

dir

mkdir directorio
echo "hola que tal" > fichero.txt
dir

mklink /d dir-link  directorio
mklink /h dir-hard-link directorio  # no permitido
mklink /j dir-junction directorio
mklink link-to-fich fichero.txt
mklink /h hard-to-fich fichero.txt

dir /s /AL
dir

-- me acojona que el comando DIR y el explorador de window no dicen nada de los *HardLinks*
--
-- ni tampoco con el explorador de window
-- en el explorador de windows 7:
--    hardlinks - aparecen como normales no hay forma de saber que son hardlinks
--    junction  - aparecen con atributo L y al pedir info NO dan el destino
--    links     - aparecen con atributo L y al pedir info dan el destino
--    links dir - aparecen con atributo L y al pedir info dan el destino
-- con dir:
--    hardlinks - aparecen como normales no hay forma de saber que son hardlinks
--    junction  - aparecen e indican el destino como path absoluto
--    links     - aparecen   e indican el destino como path relativo
--    links dir - aparecen e indican el destino como path relativo


C:\Users\usuario\_tmp>dir
 El volumen de la unidad C es System
 El número de serie del volumen es: 4836-4DB8

 Directorio de C:\Users\usuario\_tmp

16/02/15  10:29              .
16/02/15  10:29              ..
16/02/15  10:26         dir-junction [C:\Users\usuario\_tmp\directorio]
16/02/15  10:24         dir-link [directorio]
16/02/15  10:23              directorio
16/02/15  10:28                14 fichero.txt
16/02/15  10:28                14 hard-to-fich
16/02/15  10:27          link-to-fich [fichero.txt]
               3 archivos             28 bytes
               5 dirs  96.986.828.800 bytes libres

C:\Users\usuario\_tmp>

-----------
-----------
 The dangers of robocopy and symbolic links
https://social.technet.microsoft.com/forums/windows/en-US/5c663dab-3da8-4aa4-a690-de61fe258313/the-dangers-of-robocopy-and-symbolic-links

Genera una extructura recursiva:


Para resolverlo:

Use RoboCopy to fix it with "Not Logic"
1) Create an empty folder, something like c:\junkola
2) robocopy c:\junkola x:\Your-folder-to-delete /PURGE /E
Because the junkola folder is empty it will remove all files/folders from the bad directory.
Just make sure you replace x:\Your-folder-to-delete with the full path of YOUR bad directory.


REM No poner \ finales o se lía !!!
SET _source=C:\Users\admin
SET   _dest=E:\Users\admin

SET _what=/COPYALL /B /MIR /S /E /SL     /L
SET _what=/COPYALL /B /MIR /S /E /SL /XJ /L
REM     /COPYALL :: Copiar toda la información del archivo (equivalente a /COPY:DATSOU).
REM     /B       ?? Copiar archivos en modo de copia de seguridad.      -
REM     /MIR     :: Reflejar un árbol de directorios (equivalente a /E más /PURGE).
REM     /S       :: Copiar subdirectorios, pero no los vacíos.
REM     /E       :: Copiar subdirectorios, incluidos los vacíos.
REM     /SL      :: copia los vínculos simbólicos frente al destino.
REM **  /XJ      :: Excluir puntos de unión (incluidos normalmente de manera predeterminada).
REM **  /XJD     :: Excluir puntos de unión para directorios.
REM **  /XJF     :: Excluir puntos de unión para archivos.
REM **  /L       :: Sólo mostrar, no copiar, agregar marca de tiempo ni eliminar archivos.
REM .

SET _options=/R:0 /W:0 /LOG:c:\ROBOCOPY-MyLogfile.txt  /TEE
REM     /R:n         :: Número de reintentos en copias con errores; valor predeterminado: 1 millón.
REM     /W:n         :: Tiempo de espera entre reintentos; valor predeterminado: 30 segundos.
REM     /LOG:archivo :: Incluir estado en archivo LOG (sobrescribir registro existente).
REM     /TEE         :: Enviar resultado a ventana de consola y a archivo de registro.
REM .

echo ROBOCOPY "%_source%" "%_dest%" %_what% %_options%
ROBOCOPY "%_source%" "%_dest%" %_what% %_options%


OJO: genera path *infinito* sin /SL y con  /SL , deben ser los /XJD /XJF
E:\Users\admin\AppData\Local\Datos de programa\Datos de programa\..\Datos de programa\Datos de programa\
Ref:
    dir /s /AL C:\Users\admin\

Para mostrar el path infinito
REM No poner \ finales o se lía !!!
SET _source=C:\Users\lblanco\AppData\Local
SET   _dest=C:\Users\lblanco\_tmp\BORRAR\Local

SET _what=/COPYALL /B /MIR /S /E     /L


mkdir "%_dest%"



{{{ ------------------------------------------------------------
C:\Users\lblanco>dir /s /AL
 El volumen de la unidad C es System
 El número de serie del volumen es: 4836-4DB8

 Directorio de C:\Users\lblanco

19/05/14  16:26         Application Data [C:\Users\lblanco\AppData\Roaming]
19/05/14  16:26         Cookies [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Cookies]
19/05/14  16:26         Local Settings [C:\Users\lblanco\AppData\Local]
19/05/14  16:26         My Documents [C:\Users\lblanco\Documents]
19/05/14  16:26         NetHood [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Network Shortcuts]
19/05/14  16:26         PrintHood [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]
19/05/14  16:26         Recent [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Recent]
19/05/14  16:26         SendTo [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\SendTo]
19/05/14  16:26         Start Menu [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Start Menu]
19/05/14  16:26         Templates [C:\Users\lblanco\AppData\Roaming\Microsoft\Windows\Templates]
               0 archivos              0 bytes

 Directorio de C:\Users\lblanco\AppData\Local

19/05/14  16:26         Application Data [C:\Users\lblanco\AppData\Local]
19/05/14  16:26         History [C:\Users\lblanco\AppData\Local\Microsoft\Windows\History]
19/05/14  16:26         Temporary Internet Files [C:\Users\lblanco\AppData\Local\Microsoft\Windows\Temporary Internet Files]
               0 archivos              0 bytes

 Directorio de C:\Users\lblanco\Documents

19/05/14  16:26         My Music [C:\Users\lblanco\Music]
19/05/14  16:26         My Pictures [C:\Users\lblanco\Pictures]
19/05/14  16:26         My Videos [C:\Users\lblanco\Videos]
               0 archivos              0 bytes

C:\Users\lblanco>
C:\Users\lblanco>

-- reproducirlos desde línea de comando
-- cambiarle los atributos

}}} ------------------------------------------------------------




1 comment:

  1. Hola. No soy experto, pero ayer conseguí hacer mklink a un pendrive cuando lo formateé en NTFS (el origen era NTFS tb), antes estaba en FAT32 y me decía "El dispositivo no admite vínculos simbólicos."
    Probé a expulsar el pendrive y hacer cambios en los archivos, y estos se actualizaban al volver a conectar el pendrive.

    ReplyDelete