Dic
20
2007
Enlaces Simbólicos en Windows
By juanmi
Hoy me ha surgido la necesidad de crear enlaces simbólicos en Windows, al igual que en Sistemas Operativos basados en Linux. Esta función no viene implementada en el kernel de NT asi que hay que utilizar una aplicacion externa. La aplicacion es de sysinternals pero creo que ha retirado el programa y su soporte, el programa en cuestio se llama Junction, asi que os lo dejo en descargas, ya que me ha costado una pizca encontrarlo, no necesita punto net ni nada raro, funciona en NT, W2k, XP o Vista.
Descaraga el archivo en custión Junction.zip descomprímelo y pégalo en C:/windows/system32, ahora entra en el cmd y crea el enlace de la siguiente forma:
c:junction -s ruta_destino ruta_origen
Para borrar:
c:juction -d ruta_destino
Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38
A mi también me ha surgido una necesidad….voy al baño
……
¿qué es eso de lo que hablas?
Que bueno cabronazo, lo que me he reido, estás que te sales…………. 😉
Igual es porque el jefe se ha ido de vacaciones….:D
Respondiendo a las dudas de Miembro, dejo algo de info por si puede ser de ayuda (la verdad es que no se si será a esto a lo que se refiere Juanmi)
Enlaces simbólicos, su utilidad, su aplicaciÓn en XP, W2003 y variantes en Windows Vista
Por ejemplo, ante la pregunta:
Tengo un fichero en una carpeta compartida y necesita permisos de escritura, pero no quiero que los usuarios sean capaces de borrarlo, ¿es posible?
Recordemos que realmente el proceso de borrado de un fichero no es nada más que eliminar el apuntador desde el directorio y marcar esos cluster como libres en la MFT. Es decir, el fichero en sí sigue existiendo mientras esos cluster no se utilicen para otra asignación de fichero.
Si fuésemos capaces de crear un apuntador desde otro directorio a ese mismo fichero, es decir si el fichero estuviese referenciado desde dos sitios, el borrado desde uno de ellos sólo liberaría ese apuntador. El espacio físico del fichero no se marcará como libre hasta que nadie lo referencie y, como sigue referenciado desde el apuntador del otro directorio, seguirá existiendo desde él.
Es decir, imaginamos que tenemos un fichero llamdao mis-datos.txt que está apuntado por la carpeta c:carpeta1, es decir que el nombre completo sería c:carpeta1mis-datos.txt
Si fuésemos capaces desde c:carpeta2, de apuntar al mismo fichero, entonces el borrado desde la carpeta anterior simplemente implicaría que no sería accesible desde ella, pero sí desde c:carpeta2.
En XP, Windows 2003 e incluso en Vista, esto es inmediato con el comando FSUTIL. Este comando permite crear «links duros» (enlaces simbolicos: «hardlinks») desde una carpeta a cualquier fichero (siempre y cuando el disco sea NTFS). Veamos un ejemplo.
En el disco R: me creo carpeta1 y carpeta2. En carpeta1, pongo un fichero de texto llamado mis-datos.txt con el texto «prueba de mis-datos».
Posteriormente doy el comando:
[R:]fsutil hardlink create r:carpeta2enlace-1.txt
r:carpeta1mis-datos.txt
y el sistema me responde:
Hardlink created for r:carpeta2enlace-1.txt <<===>>
r:carpeta1mis-datos.txt
El nombre del fichero enlace-1.txt puede ser cualquiera, aconsejo que sea el mismo que el otro, es decir mis-datos.txt, pero lo he puesto a propósito diferente para que veamos que no tiene por qué coincidir. Si ahora hacemos:
[R:]rd carpeta1 /s
carpeta1, Are you sure (Y/N)? y
Acabamos de borrar no solamente mis-datos.exe, sino tambien toda la carpeta1. Aún así:
[R:]cd carpeta2
[R:carpeta2]type enlace-1.txt
prueba de mis-datos
Es decir, sigue todo existiendo… 🙂
Lo que sí es verdad es que Vista incorpora nativamente otros comandos de enlaces simbólicos nuevos, por lo que, la operacion anterior, no sólo podemos hacerla de esta forma sino tambien con el nuevo comando de Vista MKLINK.
Si ejecutas MKLINK, te dice:
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.
En nuestro caso, ejecutariamos para tener lo mismo que con FSUTIL:
mklink /h r:carpeta2enlace-1.txt r:carpeta1mis-datos.txt
Cuidado con el parametro /J porque crea un enlace de carpeta (nueva) a carpeta existente, pero si se borra la original el enlace queda huérfano. Es decir, no sirve en ese caso.
Por supuesto, todos estos comandos hay que darlos, si estamos en Vista, en una consola arrancada en modo elevado (es decir, botón derecho en Símbolo del Sistema -Inicio, Accesorios- y «Ejecutar como Administrador).
(fuente: José Manuel Tella Llop; http://multingles.net/docs/jmt/enlaces.html)
Chapeau 😉
Por que no editas la noticia y lo ponemos como texto 😉
No sabia que el nuevo kernel de Pindous ya dejaba hacerlo, la verdad es que como a mi me hacia falta en un 2000 server, no pude hacerlo de otra forma 😉
Gracias Devil !!!!