Me mudé de un servidor web antiguo a uno nuevo. Ahora algunos enlaces simbólicos no funcionan porque cambiamos la estructura de la carpeta. Quiero saber si existe una manera fácil de reparar estos enlaces. Encontré los enlaces con este comando:
find -L . -type l -ls
Los enlaces se ven así:
./example/vondercode/releases/example.com/2.0/www/img/uploads -> /home/example/vondercode/uploads
./example2/www/img/uploads -> /home/example2/vondercode/uploads
Ahora los enlaces deben verse así:
./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
Es muy fácil decirlo, todo /home
debería ser reemplazado por /var/www/html
¿Es esto posible?
Respuesta1
si es "simplemente reemplace /home con /var/www/html", entonces este enfoque debería funcionar:
find . -type l -exec sh -c 'lnk="{}"; target="$(readlink '{}' | sed 's#/home#/var/www/html#')"; unlink "${lnk}"; ln -s "${target}" "${lnk}" ' \;
Gracias a Toby Speight por señalar que la primera versión no funcionó como se esperaba; esto ya está solucionado.
Respuesta2
Escribí una herramienta. Puedes usarlo así:
fix_broken_symlinks . /home /var/www/html --force
Vea todos los detalles en mi respuesta principal aquí:¿Cómo puedo "volver a vincular" muchos enlaces simbólicos rotos?