Cópia Unix (cp) sem links simbólicos

Cópia Unix (cp) sem links simbólicos

Quero copiar meus arquivos, mas converter os links simbólicos em links físicos (ou seja, o arquivo real). Como posso fazer isso?

Aqui está o meu código (que não está funcionando):

cp -RL ${FROM_DIR} ${TO_DIR}

Nota: isto é para fins de Xcode - links simbólicos não são permitidos em uma compilação.

Obrigado!

EDITAR:

O problema é a maneira como removo os arquivos primeiro - não estou removendo os links simbólicos existentes.

rm -RLf "${FROM_DIR}/*"

Responder1

Não tenho certeza sobre cpa implementação do UNIX, mas o GNU cppor padrão não preserva links simbólicos. E links físicos não são a mesma coisa que arquivos. Por padrão, cp cria arquivos/diretórios a partir de links simbólicos. Provavelmente você não precisa da opção -L para seus propósitos. Se você realmente precisa disso, você pode usar a opção --no-preserve=links.

Referir-se man cp:

   --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all

   --no-preserve=ATTR_LIST
          don't preserve the specified attributes

informação relacionada