web-dev-qa-db-pt.com

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

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

O rsync apagará B.c?

Pastas

Agora suponha que /foo/src contenha o diretório A com alguns arquivos dentro dele e que /foo/dest contenha ambos os 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

O rsync irá apagar B e seu conteúdo?

41
Crowder

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:

  • −−el (alias para −−elete − durante)
  • −−delete (exclui arquivos estranhos de dirs de destino)
  • −−delete − before (o destinatário exclui 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)

Desde que você chamou especificamente a opção - a, aqui está o que a página man diz

- a, −−archive >

Isso é equivalente a - rlptgoD. É uma maneira rápida de dizer que você quer recursão e quer preservar quase tudo (com −H sendo uma omissão notável). A única exceção à equivalência acima é quando −− files − from é especificado, neste caso, −r não está implícito.

Observe que - a não preserva hardlinks, porque encontrar arquivos com vários links é caro. Você deve especificar separadamente - H.

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

48
SaxDaddy