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

44

arquivos

Suponha que /foo/srccontenha apenas A.ce que /foo/destcontenha ambos A.ce B.c. E suponha que eu execute o seguinte comando:

rsync /foo/src/ /foo/dest

Vai rsyncapagar B.c?

Pastas

Agora, suponha que /foo/srccontenha o diretório Acom alguns arquivos dentro dele e que /foo/destcontenha os dois diretórios Ae B, cada um com alguns arquivos dentro deles. E suponha que eu execute o seguinte comando (a opção -a inclui -r, recursive):

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

Irá rsyncapagar Be seu conteúdo?

multidão
fonte
Você precisa da --deletetroca.
Fideli

Respostas:

51

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

  • −−del (alias para −delete − durante)
  • -Delete (exclui arquivos estranhos dos diretórios de destino)
  • -Delete-before (o destinatário exclui antes do xfer [padrão])
  • −−delete − durante (o receptor exclui durante xfer, não antes)
  • -Delete-after (o receptor exclui após xfer, não antes)
  • - exclua - exclua (também apague arquivos excluídos dos diretórios de destino)
  • −−max − delete = NUM ​​(não exclua mais que NUM arquivos)

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

−a, −−arquivo >

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

Observe que −a não preserva links físicos , porque é caro encontrar arquivos com links múltiplos. Você deve especificar separadamente −H .

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

SaxDaddy
fonte