qual é o propósito do cp -s?

2

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

O propósito para criar a opção -l para o comando cp é recursivamente hard-link (o conteúdo de) diretórios. A opção -s é a contraparte, criando links temporários 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 seja dependente de distro. No Ubuntu 12.04, esse é o resultado. Somente se o arquivo original e o link estiverem no mesmo diretório, funcionará.

Talvez a sintaxe esteja incorreta? cp -rs target_directory destination_directory é o que eu 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
    
por anotherguy 08.01.2015 / 22:57

1 resposta

3

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

cp -rs $PWD/sourcedir/ targetdir/

Os links simbólicos em targetdir conterão caminhos absolutos para sourcedir .

Caso contrário, se ele criasse um link simbólico, criaria algo como:

targetdir/filename -> sourcedir/filename

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

targetdir/filename -> ../sourcedir/filename

cp não tenta descobrir como os diretórios de origem e de destino se relacionam entre si, para que possa adicionar o número apropriado de% prefixos../.

    
por 08.01.2015 / 23:32

Tags