
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_directory
foi 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 targetdir
conterã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
cp
não tenta descobrir como os diretórios de origem e de destino se relacionam, para poder adicionar o número apropriado de ../
prefixos.