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>
------------- links - aparecen
-- links dir - aparecen
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
16/02/15 10:24
16/02/15 10:23
16/02/15 10:28 14 fichero.txt
16/02/15 10:28 14 hard-to-fich
16/02/15 10:27
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
}}} ------------------------------------------------------------
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
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
0 archivos 0 bytes
Directorio de C:\Users\lblanco\AppData\Local
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
0 archivos 0 bytes
Directorio de C:\Users\lblanco\Documents
19/05/14 16:26
19/05/14 16:26
19/05/14 16:26
0 archivos 0 bytes
C:\Users\lblanco>
C:\Users\lblanco>
-- reproducirlos desde línea de comando
-- cambiarle los atributos
}}} ------------------------------------------------------------
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."
ReplyDeleteProbé a expulsar el pendrive y hacer cambios en los archivos, y estos se actualizaban al volver a conectar el pendrive.