rsync dir-merge afetado por filtros em local e remoto

2

Estou usando o rsync com --delete para fazer upload de arquivos para um servidor da web. Existem arquivos que eu quero excluir porque são arquivos de configuração. Estou usando o filtro "dir-merge" para que eu possa ter arquivos .rsync-filter espalhados pelos meus diretórios, para excluir arquivos de configuração / especiais.

Isso parece simples, mas Estou tendo problemas !

Depois de muita investigação, meu problema parece ser que, se eu excluir um arquivo localmente com um filtro .rsync, o arquivo ainda será excluído do controle remoto, a menos que já exista um correspondente. rsync-filter já no controle remoto.

O que isso significa na prática é que, se eu criar um filtro .rsync (localmente) para excluir um arquivo, o rsync ainda excluirá esse arquivo do controle remoto. Mas também copiará o filtro .rsync para o controle remoto, então da próxima vez que eu tentar, ele será corretamente excluído.

Então, minha pergunta é (meio que ampla) estou correta nisso, e onde a página man menciona isso? Tudo parece um pouco contra-intuitivo para mim!

Ah, e também, como o modificador "e" merge | dir-merge é útil se este for o caso? (o modificador "e" exclui o arquivo de mesclagem da transferência). Certamente o modificador "e" torna mais provável que o rsync não faça o que você espera?

    
por Peter Ryan 26.09.2014 / 21:22

2 respostas

1

Em resposta a minha própria pergunta, não consegui entender como o rsync funciona!

Basicamente, eu achei que o rsync local rodou todo o processo - principalmente, exceto que o receptor decide o que é deletado. Um efeito colateral disso é que, se arquivos de mesclagem por diretório estiverem sendo usados, o receptor não terá conhecimento deles até que os próprios arquivos de mesclagem tenham sido carregados.

Meu primeiro pensamento foi primeiro executar o rsync sem delete, para obter os arquivos de mesclagem em sincronia e re-executar o rsync com delete para garantir que as coisas fossem executadas corretamente . Mas acontece que --delete-after resolve isso.

Outra coisa que me causou confusão é que, se você usar --delete-after e --dry-run , ele ainda parecerá excluir os arquivos excluídos porque, sendo uma execução a seco, o receptor ainda não está ciente das regras de filtragem no (ainda) arquivos de mesclagem não sincronizados.

Por fim, o modificador "e" no mesclagem excluiria o upload dos arquivos de mesclagem e, portanto, concluo que não é um bom plano usá-lo ao mesmo tempo que --delete !

    
por 29.09.2014 / 00:29
0

Você não quer excluir esses arquivos, você quer protegê-los. Ou seja não use - filename , mas use P filename .

    
por 27.09.2014 / 13:35

Tags