qual é o propósito de cp -s?

qual é o propósito de cp -s?

como mostra a resposta a esta pergunta, Existe uma diferença entre hardlinking com cp -l ou ln?

O objetivo de criar a opção -l para o comando cp é vincular recursivamente (o conteúdo de) diretórios. A opção -s é a contrapartida, criando links virtuais em vez de links físicos, mas parece que não pode ser usada recursivamente.

Qualquer tentativa de fazer isso resulta na mensagem de erro:

cp: `source_dir/source_file': can make relative symbolic links only in current directory

Talvez isso dependa da distribuição. No Ubuntu 12.04, este é o resultado. Somente se o arquivo original e o link estiverem no mesmo diretório é que funciona.

Talvez a sintaxe esteja incorreta? cp -rs target_directory destination_directoryfoi o que usei.

exemplo:

$ 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

Responder1

Dado um caminho absoluto para o diretório de origem:

cp -rs $PWD/sourcedir/ targetdir/

Os links simbólicos targetdirconterão caminhos absolutos para sourcedir.

Caso contrário, se apenas fizesse um link simbólico, criaria algo como:

targetdir/filename -> sourcedir/filename

Mas esse não é o caminho relativo correto para encontrar o arquivo original, deveria ser:

targetdir/filename -> ../sourcedir/filename

cpnão tenta descobrir como os diretórios de origem e de destino se relacionam, para poder adicionar o número apropriado de ../prefixos.

informação relacionada