O rsync exclui arquivos, pastas no destino por padrão?

38

Arquivos

Suponha que /foo/src contenha apenas A.c e que /foo/dest contenha A.c e B.c . E suponha que eu execute o seguinte comando:

rsync /foo/src/ /foo/dest

rsync apaga B.c ?

Pastas

Agora, suponha que /foo/src contenha o diretório A com alguns arquivos dentro dele e que /foo/dest contenha os dois diretórios A e B , cada um com alguns arquivos dentro deles. E suponha que eu execute o seguinte comando (a opção -a inclui -r, recursiva):

rsync -a /foo/src/ /foo/dest

rsync apagará B e seu conteúdo?

    
por Crowder 19.03.2014 / 00:09

1 resposta

45

Por padrão, o rsync não exclui arquivos, mas isso depende das opções de comandos que você especifica. Você pode usar qualquer um dos seguintes, se desejar excluir arquivos:

  • −− del (alias para −−elete − durante)
  • −− delete (exclui arquivos estranhos de dirs de destino)
  • −− delete − before (exclusões do receptor antes de xfer [padrão])
  • −− delete − during (o receptor exclui durante o xfer, não antes)
  • −− delete − after (receptor exclui após xfer, não antes)
  • −− delete − excluded (também exclui arquivos excluídos de dirs de destino)
  • −− max − delete = NUM (não exclua mais de NUM arquivos)

Como você chamou especificamente a opção -a , veja o que a página do manual diz

−a, −−archive >

This is equivalent to −rlptgoD. It is a quick way of saying you want recursion and want to preserve almost everything (with −H being a notable omission). The only exception to the above equivalence is when −−files−from is specified, in which case −r is not implied.

Note that −a does not preserve hardlinks, because finding multiply-linked files is expensive. You must separately specify −H.

Portanto, parece que a resposta à sua pergunta é NÃO, não será excluída, dado seus exemplos.
HTH

    
por 19.03.2014 / 01:25