Tengo una completa sub-sistema de archivos dentro de un trazado /home/user/system
que contiene la estructura estándar de Linux con los directorios /bin
, /home
, /root
, /usr
, /var
, /etc
, ...
Este subsistema de archivos contiene enlaces simbólicos, relativos o absolutos. Los enlaces simbólicos relativos están bien, permanecen dentro del subsistema de archivos debajo /home/user/system
. Pero los enlaces simbólicos absolutos son problemáticos, ya que apuntan a un objetivo fuera del subsistema de archivos.
Como ejemplo, asumimos un enlace simbólico absoluto de la siguiente manera (visto dentro del subsistema de archivos):
/usr/file1 -> /usr/lib/file1
En el sistema de archivos general, tenemos un enlace /home/user/system/usr/file1
que ahora apunta a un archivo /usr/lib/file1
fuera del subsistema de archivos, en lugar de un archivo /home/user/system/usr/lib/file1
dentro del subsistema de archivos.
Me gustaría tener un script simple, preferiblemente una sola línea de comando (rsync, chroot, find, ...) que convierta cada enlace simbólico absoluto en uno relativo.
En el ejemplo dado, ese enlace relativo se convertiría en
/usr/file1 -> ../usr/lib/file1