Como copiar o conteúdo de uma pasta sem afetar as permissões da pasta de destino?

Como copiar o conteúdo de uma pasta sem afetar as permissões da pasta de destino?

Quero copiar todos os arquivos e pastas de um diretório para outrosemalterando as permissões do diretório de destino.

Onde a pasta de origem é 555 e a pasta de destino é 775. Se eu usar o comando abaixo, o destino será alterado para 555. Não quero isso.

cp -r /origin/. /destination

Qual é a sintaxe correta para copiar o conteúdo de/origin? Então esse /destination permanece 775

Eu não tenho sudo.

Responder1

usar rsync:

rsync -rlD /origin/ /destination/

O importante é o /final de origin/, que diz ao rsync para copiar o conteúdo do diretório, não o diretório em si. Dessa forma, o diretório de nível superior não é copiado e /destinationnão é alterado, exceto os arquivos adicionados a ele.

Explicação dos interruptores:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)
-D                          same as --devices --specials

--devices               preserve device files (super-user only)
--specials              preserve special files

Responder2

Em vez de copiar o próprio diretório, copie os arquivos nele contidos.

cp -r /origin/* /destination

Se houver arquivos de ponto (arquivos cujo nome começa com o caractere .), eles não serão copiados, pois *os ignora. Use cp -r /origin/.[!.]* /destinationpara copiar os arquivos de ponto e cp -r /origin/..?* /destinationse houver arquivos cujo nome comece com ..(além ..dele mesmo, que designa o diretório pai).

informação relacionada