Problema
Ao copiar arquivos com cp -H
ou cp -L
, obtenho os mesmos resultados:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Esta resposta aqui descreve as duas opções como MENOS semelhantes, a menos que usadas em combinação com -R
. Não para mim. Os arquivos vinculados por software tornam-se cópias renomeadas dos arquivos para os quais apontam na origem.
Pergunta :
Qual é o uso adequado de cp -H
e cp -L
? Este é o comportamento esperado?
Minha tentativa de resolver :
man cp
diz-me o mesmo para as duas opções, mas info cp
as palavras o tornam ainda mais confuso. Talvez alguém possa me ajudar a detalhar um pouco:
-H
Se um argumento da linha de comandos especificar um link simbólico, copie o arquivo para o qual aponta, em vez do próprio link simbólico . No entanto, copie (preservando sua natureza) qualquer link simbólico encontrado por meio de passagem recursiva.
Isso parece uma contradição para mim: acho que » a natureza de um elo simbólico « é que aponta para algum lugar ...
-L, --dereference
Siga os links simbólicos ao copiar deles. Com esta opção,cp
não é possível criar um link simbólico. Por exemplo, um link simbólico (para arquivo normal) na árvore de origem será copiado para um arquivo regular na árvore de destino.
Eu sei que um link simbólico não é um arquivo comum, mas… eu admito que estou muito desafiado com esta explicação aqui.
info cp
, procure-R
. DizCopy directories recursively.
Mas você está testando com não diretórios. A diferença está no conteúdo dos diretórios que você está copiando, não nos argumentos da linha de comando.info cp
e tentei descobrir o que a escolha das palavras nessa opção realmente significa & ndash; e sobre o qual esta postagem é sobre. A publicação também contém a própria redacção deinfo cp
- assim I deve ter, pelo menos abriu ...;)Respostas:
Com links simbólicos, as ferramentas têm duas coisas que podem ser feitas:
Dizer que
-H
"preserva sua natureza" não é uma contradição. Considere a alternativa. Se você usar-L
, qualquercp
descoberta de links simbólicos será aberta e seu conteúdo copiado para o nome do arquivo de destino. Portanto, a fonte era um link simbólico, mas sua cópia não é um link simbólico. Então, "perdeu sua natureza como um link simbólico".Considerar
fonte
A diferença de comportamento entre
-L
e-H
vem quando também-r
é especificada.cp
não criará links simbólicos em subdiretórios,-L -r
mas criará se você usar-H -r
.fonte