![¿Cuál es el propósito de cp -s?](https://rvso.com/image/36039/%C2%BFCu%C3%A1l%20es%20el%20prop%C3%B3sito%20de%20cp%20-s%3F.png)
como muestra la respuesta a esta pregunta, ¿Existe alguna diferencia entre realizar enlaces duros con cp -l o ln?
El propósito de crear la opción -l para el comando cp es vincular recursivamente (el contenido de) directorios. La opción -s es la contraparte, creando enlaces suaves en lugar de enlaces duros, pero parece que no se puede usar de forma recursiva.
Cualquier intento de hacerlo da como resultado el mensaje de error:
cp: `source_dir/source_file': can make relative symbolic links only in current directory
Quizás esto dependa de la distribución. En Ubuntu 12.04, este es el resultado. Sólo funciona si el archivo original y el enlace están en el mismo directorio.
¿Quizás la sintaxis sea incorrecta?
cp -rs target_directory destination_directory
es lo que usé.
ejemplo:
$ ls sourcedir/
-rw-rw---- 1 user group 1123 Jan 8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory
Respuesta1
Dada una ruta absoluta al directorio fuente:
cp -rs $PWD/sourcedir/ targetdir/
Los enlaces simbólicos targetdir
contendrán rutas absolutas a sourcedir
.
De lo contrario, si simplemente hiciera un enlace simbólico, crearía algo como:
targetdir/filename -> sourcedir/filename
Pero esa no es la ruta relativa correcta para encontrar el archivo original, debería ser:
targetdir/filename -> ../sourcedir/filename
cp
no intenta descubrir cómo se relacionan entre sí los directorios de origen y de destino, para poder agregar la cantidad adecuada de ../
prefijos.