
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 /destination
nã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/.[!.]* /destination
para copiar os arquivos de ponto e cp -r /origin/..?* /destination
se houver arquivos cujo nome comece com ..
(além ..
dele mesmo, que designa o diretório pai).