Eu tenho um sub-sistema de arquivos completo dentro de um caminho /home/user/system
que contém a estrutura padrão do Linux com diretórios /bin
, /home
, /root
, /usr
, /var
, /etc
, ...
Este sub-sistema de arquivos contém links simbólicos, relativos ou absolutos. Os links simbólicos relativos são ótimos, eles ficam no sub-sistema de arquivos abaixo /home/user/system
. Mas links simbólicos absolutos são problemáticos, pois apontam para um alvo fora do sistema de subarquivos.
Como exemplo, assumimos um link simbólico absoluto da seguinte maneira (visto dentro do sub-sistema de arquivos):
/usr/file1 -> /usr/lib/file1
No sistema de arquivos geral, temos um link /home/user/system/usr/file1
que agora aponta para um arquivo /usr/lib/file1
fora do sub-sistema de arquivos, em vez de um arquivo /home/user/system/usr/lib/file1
dentro do sub-sistema de arquivos.
Eu gostaria de ter um script simples, de preferência uma única linha de comando (rsync, chroot, find, ...) que converta cada link simbólico absoluto para um relativo.
No exemplo dado, esse link relativo se tornaria
/usr/file1 -> ../usr/lib/file1