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

1

Eu quero copiar todos os arquivos e pastas de um diretório para outro sem alterar 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. Eu não quero isso.

cp -r /origin/. /destination

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

Eu não tenho sudo.

    
por MrPaulDriver 08.04.2017 / 11:47

2 respostas

2

use rsync :

rsync -a /origin/ /destination/

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

Comutadores explicados:

-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
    
por 08.04.2017 / 12:07
0

Em vez de copiar o diretório em si, copie os arquivos nele.

cp -r /origin/* /destination

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

    
por 09.04.2017 / 00:38