5 votos

¿Cómo arreglar un enlace simbólico que apunta a una ubicación incorrecta?

Estoy un poco confundido con hard/softlinks aquí. Estoy en OSX, tengo una carpeta '4' y dos enlaces que apuntan a ella:

drwxr-xr-x  4 imm  staff  136 14 Jun 21:24 4
lrwxr-xr-x  1 imm  staff    1 14 Jun 16:56 4.0 -> 4
lrwxr-xr-x  1 507  wheel    1 14 Jun 16:56 Current -> 4

Cuando sigo 'Current' en la carpeta, me lleva a una ubicación completamente diferente (la ruta de la que copié todas las cosas). Me gustaría que 'Actual' apuntara a la carpeta '4' en la nueva ubicación.

¿Cómo puedo conseguirlo?

12voto

Darth Android Puntos 29212

Tienes que eliminar y volver a crear el enlace. Puede hacerlo con

rm Current

Y luego recrearlo:

ln -s /path/to/the/new/location Current

Puede utilizar una ruta absoluta (para simplificar).

Si quieres que la ruta se mueva cuando muevas el enlace, entonces puedes usar una ruta relativa. Sólo ten en cuenta que almacena la ruta relativa y sólo la resuelve desde la ubicación actual del enlace cuando intentas acceder a él.

Edición: ya que mencionas los hardlinks, voy a introducirlos aquí.

Un hardlink es similar a un symlink, en el sentido de que sigue apuntando a un archivo, pero se limita al sistema de archivos actual, pero además es más rápido. Un hardlink apunta a un inodo específico en el disco, en lugar de a otra ubicación en el sistema de archivos. No se pueden tener enlaces duros relativos.

Puedes considerar un sistema de archivos básico como una colección de enlaces duros a ubicaciones en el disco, uno por archivo. La creación de enlaces duros adicionales sólo crea punteros adicionales al mismo archivo. Son considerablemente más rápidos porque el sistema sabe exactamente en qué parte del disco está el archivo que necesita (hay que resolver un enlace simbólico, y luego hay que buscar y resolver ese nuevo archivo), pero debido a esto está limitado sólo a los inodos del sistema de archivos actual.

El sistema de archivos registra automáticamente el número de enlaces duros que apuntan a un nodo en particular, y simplemente borra el nodo cuando ese conteo llega a 0.

7voto

Puedes hacer esto:

ln -nfs /path/to/the/new/location Current

donde 'Current' es el enlace simbólico actual. Las opciones -n y -f desvinculan y eliminan el 'Actual' original y permiten la creación del nuevo (-s para enlace suave).

Me doy cuenta de que la pregunta ha sido respondida y el problema original resuelto hace mucho tiempo, pero el proceso de volver a señalar un enlace simbólico sin pasar por el paso de eliminación por separado me estaba molestando de nuevo, y una búsqueda en Google para la solución arrojó este q&a. Espero que ayude a alguien más que esté buscando la respuesta.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: