Mudei de um servidor web antigo para um novo. Agora alguns links simbólicos não funcionam, porque alteramos a estrutura da pasta. Quero saber se existe uma maneira fácil de reparar esses links? Encontrei os links com este comando:
find -L . -type l -ls
Os links ficam assim:
./example/vondercode/releases/example.com/2.0/www/img/uploads -> /home/example/vondercode/uploads
./example2/www/img/uploads -> /home/example2/vondercode/uploads
Agora os links devem ficar assim:
./example/vondercode/releases/example.com/2.0/www/img/uploads -> /var/www/html/example/vondercode/uploads
./example2/www/img/uploads -> /var/www/html/example2/vondercode/uploads
É tão fácil dizer que tudo /home
deveria ser substituído por /var/www/html
Isso é possível?
Responder1
se for "basta substituir/home por/var/www/html", então esta abordagem deve funcionar:
find . -type l -exec sh -c 'lnk="{}"; target="$(readlink '{}' | sed 's#/home#/var/www/html#')"; unlink "${lnk}"; ln -s "${target}" "${lnk}" ' \;
Obrigado por Toby Speight apontar que a primeira versão não funcionou como esperado - isso foi corrigido agora.
Responder2
Eu escrevi uma ferramenta. Você pode usá-lo assim:
fix_broken_symlinks . /home /var/www/html --force
Veja todos os detalhes na minha resposta principal aqui:Como posso "revincular" muitos links simbólicos quebrados?