Unix Copy (cp) sem links simbólicos

1

Eu quero copiar meus arquivos, mas converter os links simbólicos para hard links (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}

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

Obrigado!

EDITAR:

O problema é a maneira que eu removo os arquivos primeiro - ele não está removendo os links simbólicos existentes.

rm -RLf "${FROM_DIR}/*"
    
por Garrett 02.11.2012 / 07:23

1 resposta

2

Não tenho certeza sobre o UNIX cp implemebntation, mas o GNU cp por padrão não preserva os links simbólicos. E hard links não são a mesma coisa que arquivos. Por padrão, cp cria arquivos / dirs 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.

Consulte 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
    
por 02.11.2012 / 08:52