como eu excluo uma pasta específica no destino ao usar o rsync?

6

considere o seguinte exemplo:

/source
  /source/folder1
  /source/folder2
  /source/folder3

/destination
  /destination/folder2
  /destination/folder3
    /destination/folder3/mytestfolder1
  /destination/folder4
    /destination/folder4/mytestfolder1
    /destination/folder4/mytestfolder2

Eu quero sincronizar a origem com o destino, mas "/ destination / folder4 / mytestfolder1" deve ser ignorado.

Eu tentei usar o parâmetro exclude

rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/

mas isso ignora todas as pastas denominadas "mytestfolder1".

Quando eu forneci o caminho completo, nada é ignorado, pois parece que o rsync acha que o caminho está na origem e não no destino.

rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/

rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/

Eu pesquisei na rede, mas não achei nada útil.

Obrigado pela ajuda. :)

    
por mrjayviper 07.05.2016 / 06:45

1 resposta

4

Se você usar um caminho absoluto em um filtro (incluir / excluir), ele será interpretado a partir da raiz da sincronização. Você não está excluindo um diretório na origem ou excluindo um diretório no destino, você está excluindo um diretório na árvore para sincronizar.

Assim:

rsync -av --delete --progress --exclude "/folder4/mytestfolder1" /source/ /destination/
    
por 08.05.2016 / 00:25