suave - No se puede sobrescribir el enlace simbólico RedHat Linux
remover link simbolico unix (3)
He creado un enlace simbólico:
sudo ln -s /some/dir new_dir
Ahora quiero sobrescribir el enlace simbólico para que apunte a una nueva ubicación y no se sobrescribirá. Yo he tratado:
sudo ln -f -s /other/dir new_dir
Siempre puedo sudo rm new_dir
, pero prefiero que se sobrescriba si es posible. ¿Algunas ideas?
Dado que el comentario de Link from mikeytown2s está roto, explicaré por qué la respuesta de redent84s es mejor:
Mientras
ln -sfn newDir currentDir
hace el trabajo, no es una operación atómica , como se puede ver con strace:
$ strace ln -snf newDir currentDir 2>&1 | grep link
unlink("currentDir") = 0
symlink("newDir", "currentDir") = 0
Esto es importante cuando tiene una raíz de servidor web que apunta a ese enlace simbólico. Podría causar errores mientras el enlace simbólico se elimina y se crea de nuevo, incluso en el lapso de tiempo de un microsegundo.
Para evitar errores use en su lugar:
$ ln -s newDir tmpCurrentDir && mv -Tf tmpCurrentDir currentDir
Esto creará un enlace temporal y después de eso sobrescribir currentDir en una operación atómica .
Puedes crearlo y luego moverlo:
sudo ln -f -s /other/dir __new_dir
sudo mv -Tf __new_dir new_dir
edit: Missing -Tf, para tratar el directorio como un archivo normal y no solicitar sobrescribir.
De esta manera lo sobreescribirás.
ln -sfn /other/dir new_dir
funciona para mi. La -n
no elimina la referencia al enlace simbólico de destino.