Estou usando o rsync através do synchronize-module da Ansible com a seguinte definição de tarefa:
synchronize: src='{{ local_app_path }}/.' dest='{{ remote_app_path }}/' perms=no owner=yes rsync_opts=--delete-after
A execução desta tarefa gera o seguinte comando:
rsync --delay-updates -FF --compress --archive --no-perms --rsh 'ssh -S none -o StrictHostKeyChecking=no' --rsync-path="sudo rsync" --delete-after --out-format='<<CHANGED>>%i %n%L' "../src/." "[email protected]:/var/www/app/"
Meu layout de diretório é assim:
src/
# ...
app/
test/
node_modules/
package.json
provisioning/
# ...
playbook.yml
.rsync-filter
Este é o meu filtro .rsync:
exclude /src/.env
exclude /src/node_modules
Agora estou esperando executar minha tarefa de sincronização e ter a estrutura de diretório resultante no servidor com esta aparência (observe a pasta node_modules
ausente):
app/
test/
package.json
Isso funciona. No entanto, depois de criar uma pasta node_modules
no servidor ...
app/
test/
node_modules/
package.json
... e execute a sincronização novamente, a pasta node_modules
será excluída do servidor novamente (mesmo que eu tenha excluído no meu filtro .rsync):
app/
test/
package.json
Espero que a node_modules
-folder seja mantida no servidor, porque eu a listei em .rsync-filter
e não estou usando a opção --delete-excluded
.
Como posso impedir que meus arquivos / diretórios excluídos sejam excluídos com o rsync?
Muito obrigado pela sua ajuda! :)