Tengo un árbol de directorios que tiene un montón de enlaces simbólicos a los archivos bajo /home
... sin embargo, me he mudado /home
a /mnt/home
y necesito una manera de "Volver a vincular" todos los enlaces simbólicos. ¿Existe tal funcionalidad o necesito escribir un script para hacerlo?
Como ejemplo, tengo algo como lo siguiente:
[root@trees ~]# ls -l /mnt/home/someone/something
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/e
/mnt/home/someone/something/subdir:
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/subdir/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/subdir/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/subdir/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/subdir/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/subdir/e
Quiero un comando que encuentre todos los enlaces simbólicos y vuelva a vincular a los mismos lugares, pero debajo en /mnt/home
lugar de/home
¿Existe tal comando?
fuente
/mnt
una ruta; no necesita una operación de cadena más elegante que la concatenación.Sé que esto no es exactamente lo que el autor está solicitando, pero parece que ya tienen su respuesta, así que estoy agregando esto para otros como yo que se topan con la pregunta.
Lo siguiente debería ayudar si se requiere una solución más flexible, como tener un montón de enlaces simbólicos rotos que pueden repararse reemplazando parte de los objetivos del enlace simbólico.
p.ej. Después de un cambio de nombre de usuario, para reemplazar el antiguo nombre de usuario con el nuevo nombre de usuario en el destino de muchos enlaces, después de que el movimiento ya se haya realizado. Cree un script llamado replace-simlinks que se muestra a continuación:
y llámalo con el siguiente comando:
Espero que esto ayude a alguien
editar: Gracias Gilles por el arranque en este script y el consejo sobre el uso del script de enlaces simbólicos para hacer que los enlaces sean relativos.
fuente
target=${target/"/home"/"/mnt/home"}
Muy útil, sin embargo. Gracias.Cree
/home
como un enlace simbólico para/mnt/home
, y todos los enlaces simbólicos existentes serán válidos nuevamente.fuente