¿Cuál es el propósito de cp -s?

¿Cuál es el propósito de cp -s?

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_directoryes 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 targetdircontendrá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

cpno intenta descubrir cómo se relacionan entre sí los directorios de origen y de destino, para poder agregar la cantidad adecuada de ../prefijos.

información relacionada