Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: Oppenheimer en 22 Junio 2015, 14:57 pm



Título: Mover enlace símbolico de directorio?
Publicado por: Oppenheimer en 22 Junio 2015, 14:57 pm
Hola, quería saber si es posible mover un enlace simbólico de directorio, sin que este pierda la referencia al archivo al que enlaza.

Por ejemplo tengo el archivo1 en el directorio Instancias, en la siguiente ruta:

Código:
Trabajos/modelos/Instancias/archivo1

creo el enlace símbolico desde el directorio modelos:

Código:
Trabajos/modelos$ ln -s Instancias/archivo1 enlace

luego el enlace se creara en modelos de la siguiente manera: enlace-> Instancias/archivo1
si lo muevo al directorio inmediatamente superior
Código:
Trabajos/modelos$ mv enlace ..

Este ahora se encontrara en el directorio Trabajos enlazando con la misma ruta a archivo1
enlace-> Instancias/archivo1, de manera que esa ruta ya no es válida desde ese directorio.

Por lo que me pregunto si hay alguna manera de hacer el enlace simbólico con una ruta absoluta, o algún comando que sirva para moverlos por los directorios actualizando su ruta de acceso al archivo que enlazan.

Gracias de antemano. Un saludo.


Título: Re: Mover enlace símbolico de directorio?
Publicado por: moikano→@ en 22 Junio 2015, 15:37 pm
Hola.

Si que puedes moverlo donde quieras, y si que puedes hacer un enlace simbólico con una ruta absoluta.

Mira, sería algo así.

Para que lo pruebes tu mismo. digamos que estás en tu carpeta personal y tu usuario es User

Código:
echo "hola" > prueba.txt && mkdir pruebaDir && ln -s /home/User/prueba.txt  /home/User/pruebaDir/prueba && mv /home/User/pruebaDir/prueba /home/User/ && cat /home/User/prueba 

El resultado

Código:
hola

Suerte.


Título: Re: Mover enlace símbolico de directorio?
Publicado por: MinusFour en 22 Junio 2015, 15:53 pm
Si estas trabajando con enlances dentro de un mismo sistema de archivos puedes hacer un hard link en lugar de un soft link. De esa forma no te tienes que preocupar por el lugar del archivo y puedes mover la copia a donde tu quieras (dentro del mismo sistema de archivos). Incluso puedes cambiar el nombre del archivo al cual hiciste el enlace y el hard link seguira funcionando.

Código
  1. ln fuente hardlink

Donde fuente es el archivo al cual quieres hacer referencia y hardlink el nombre del archivo que contiene la referencia. Claro que los hard links tienen sus desventajas, por ejemplo la informacion no se borra a menos que borres los dos archivos.

Si quieres hacer uso de la ruta absoluta hay algunas funciones que te pueden ayudar:

Código
  1. readlink -f nombredelarchivo

Código
  1. realpath nombredelarchivo

Y las puedes usar con ln asi:

Código
  1. ln -s "$(readlink -f nombredelarchivo)" symbolic_link_nombre


Título: Re: Mover enlace símbolico de directorio?
Publicado por: Oppenheimer en 22 Junio 2015, 16:01 pm

Estupendo, me ha funcionado perfectamente para mi caso particular moikano, lo de los enlaces duros ya lo había pensado MinusFour, pero claro como tu dices tiene la desventaja de que solo sirven para trabajar dentro de un mismo sistema de archivos.

Gracias a los dos. Un saludo.