Você tem duas maneiras.
- Apenas
--exclude=dir
e não há diferença se for local ou remoto, pois, de qualquer forma, você não deseja sincronizá-lo. - Use
--rsync-path='rsync --exclude=dir'
e o rsync remoto será executado com essa opção de exclusão.
Desejo excluir pastas que já estão em um servidor remoto (ou seja, test/xyz
) e desejo executar rsync
do meu servidor de origem, onde tenho test1/xyz
pasta, portanto, não quero substituir xyz
pasta no lado remoto.
Também quero atualizar os arquivos se houver arquivos excluídos / adicionados no servidor de origem que serão excluídos / adicionados no servidor remoto, mas excluindo a pasta test/xyz
.
Eu tentei abaixo o comando para excluir o diretório remoto, mas copiou o diretório e os arquivos excluídos no diretório remoto.
rsync -ave ssh --exclude=remotedirectory root@IPADDRESS:remotepath --delete sourcepath
Alguma idéia, por favor?
Você tem duas maneiras.
--exclude=dir
e não há diferença se for local ou remoto, pois, de qualquer forma, você não deseja sincronizá-lo. --rsync-path='rsync --exclude=dir'
e o rsync remoto será executado com essa opção de exclusão. Isso deve funcionar:
rsync -av --delete --exclude=/xyz/ sourcepath/ root@IPADDRESS:remotepath/
Isso excluirá "xyz" quando ocorrer na raiz de "sourcepath", e é um diretório (o "/" final garante isso).
As barras finais nos diretórios de origem e de destino são importantes. Sem isso, a execução do second rsync criaria uma nova pasta "remotepath / sourcepath", que provavelmente não é o que você deseja.
Além disso, você tinha os parâmetros de origem e destino no caminho errado, de acordo com sua descrição (mas a confusão poderia ser minha).