Como posso recursivamente copiar arquivos sem sobrescrever as permissões existentes?

9

Quando copio arquivos de um diretório para outro, as permissões do diretório são redefinidas (por exemplo: de 0755 a 0775), e isso causa problemas, forçando-me a voltar e a redefinir manualmente as permissões do diretório. Atualmente estou fazendo cp -r /source/directory /destination/directory

Eu quero copiar todos os arquivos e novos diretórios, mas não substituir as permissões dos diretórios existentes.

    
por Eva 14.08.2013 / 04:05

3 respostas

5

Para preservar links, você pode usar cp ( página de manual do cp ) com o sinal -d , que é equivalente a --no-dereference --preserve=links .

Para combinar isso com as bandeiras -p e -R , você pode usar o sinalizador de arquivamento -a .

    
por Val 14.08.2013 / 06:56
7

Adicionar sinalizador -p

cp -pR /source/dir /dest/dir

De man cp :

-p     same as --preserve=mode,ownership,timestamps
    
por vfbsilva 14.08.2013 / 04:21
2

Meu ~/.bashrc foi modificado para conter

alias cp='cp -i --preserve=all'

Isso significa que quando eu usar cp , ele também solicitará antes de sobrescrever ( -i ) e preservar tudo (ou seja, modo, propriedade, carimbos de data e hora e, se possível, atributos adicionais: contexto, links, xattr). p>

Você sempre pode alterá-lo para apenas mode em vez de all , se quiser, mas eu gosto de ter esse alias para alterar os padrões de cp .

    
por Sparhawk 14.08.2013 / 07:10