Punteros de enlaces absolutos, capaces de funcionar en otro sistema

Tengo una carpeta y dentro de ella hay muchos enlaces.

Los enlaces son absolutos, de modo que puedo moverlos dentro de la carpeta y aún apuntan a los mismos datos. Los enlaces relativos se romperían si los moviera dentro de la carpeta.

Pero el problema surge cuando muevo la carpeta a otro sistema, por ejemplo, un disco duro externo o server. Entonces todos los enlaces absolutos tienen la base incorrecta en su dirección.

Si fuera posible que los enlaces tuvieran una variable dentro de su dirección, eso resolvería este problema.

¿Es eso posible?

Supongo que la respuesta a su problema son enlaces simbólicos variados, aunque solo existen en DragonFlyBSD según mi leal saber y entender (vea esa pregunta anterior: Dynamic Symlinks )

El command

symlinks -cr folder 

convertirá todos los enlaces simbólicos absolutos en una folder a relativa. Entonces puede mover toda la carpeta con los enlaces apuntando a su location relativa correcta (suponiendo que todos apunten a otros files dentro de la folder )

Entonces algo así como …

 find folder -type l -exec echo 'LNK=$(readlink -f "{}");rm -fv "{}";ln -sv "$LNK" "{}"' ';' > xlinks chmod +x xlinks ./xlinks 

… convertirá todos los enlaces de relativo a absoluto.

(Nota: dejé de intentar ejecutar el command directamente desde find . De todos modos, ¡te da la oportunidad de comprobar lo que va a hacer!)

No puedes tener tu pastel y comértelo. Los enlaces relativos son generalmente mejores, porque puede moverlos y copyr todo o parte del tree a otra location.

Si mueve un file dentro de la jerarquía, no está claro lo que debería suceder: si hay enlaces a -> b y c -> d , y ejecuta mv bd , ¿debería apuntar ahora a d ? Depende de usted decidir. Los enlaces simbólicos apuntan a una location; si desea apuntar a un file, use un enlace fijo (esto no es posible para los directorys).

Si mueve un file pero aún desea encontrarlo en su location anterior, agregue un enlace simbólico desde la location anterior a la nueva location.