Traduzindo a configuração rdist com várias raízes para rsync

1

Estou implementando a sintaxe rdist similar ao rsync e consigo sincronizar meus arquivos e pastas com o rsync, mas ao manipular essa sintaxe rdist, não estou entendendo essa parte except (/home/user1/log1/*/*/sql.net /home/user1/log1/*/*/core) e meus arquivos include de rdist são FILES=(/home/user1/log1 /home/user1/rightlog)

Como faço para isso no rsync? Eu tentei isso rsync -rtu --exclude='/log1/*/*/sql.net' exclude='/log1/*/*/core' $FILES remote@host:$FILES

Estou clonando o rdist exato ou preciso ajustar mais? Eu não estou recebendo a saída desejada e, além disso, às vezes sql.net pode estar presente nas outras pastas, então eu não posso fazer isso --exclude=sql.net .

    
por chandu 13.09.2016 / 21:59

1 resposta

1

Mesmo sem listas de exclusão, rsync $FILES remote@host:$FILES não funcionaria: ela expande para rsync /home/user1/log1 /home/user1/rightlog remote@host:/home/user1/log1 /home/user1/rightlog , o que tornaria /home/user1/rightlog o destino (mas o rsync reclamará que você está misturando fontes locais e remotas).

Você pode especificar várias origens com rsync, mas todas elas são copiadas para o mesmo destino e parâmetros como listas de exclusão se aplicam a todas as fontes.

Se você precisar de parâmetros diferentes para subárvores diferentes, será necessário fazer chamadas separadas para o rsync. Se você não precisar de parâmetros diferentes, sincronize a raiz comum, mas inclua apenas as partes que deseja sincronizar.

rsync --include='/log1' --include='/rightlog' --exclude='/*' /home/user1 remote@host:/home/user1

Você não precisa de chamadas separadas para o rsync para ter listas de exclusão diferentes, pois elas só precisam incluir o componente de caminho principal.

rsync --include='/log1' --include='/rightlog' --exclude='/*' \
      --exclude='/log1/*/*/sql.net' --exclude='/log1/*/*/core' \
      /home/user1 remote@host:/home/user1
    
por 14.09.2016 / 03:51