rsync não pode excluir o diretório não vazio

8

Ao sincronizar meu backup remoto, recebo o erro rsync cannot delete non-empty directory .

Eu sei a causa: eu excluí alguns arquivos e quando o rsync tenta excluir um diretório remoto porque ele não existe localmente, ele não pode, pois não está vazio. Sem a exclusão, o diretório seria esvaziado.

Eu também sei que eu poderia me livrar do problema usando --delete-excluded, mas isso não é o que eu quero.

Eu gostaria de pular o upload de determinados arquivos (porque eles são muito grandes para minha velocidade de upload), mas eu quero manter aqueles que eu já enviei há algum tempo se eles existirem localmente . Se eles não existirem localmente, eles devem ser excluídos. --delete-excluded iria apagá-los todos no lado remoto.

Isso também significa que, se um diretório não existir mais localmente, ele deve ser excluído mesmo que contenha arquivos excluídos.

É possível configurar o rsync para realizar isso?

    
por marlar 29.01.2013 / 14:57

2 respostas

2

Use o modificador p :

A p indicates that a rule is perishable, meaning that it is ignored in directories that are being deleted. For instance, the -C option’s default rules that exclude things like "CVS" and "*.o" are marked as perishable, and will not prevent a directory that was removed on the source from being deleted on the destination.

Por exemplo, eu uso a opção -F , que "diz ao rsync para procurar arquivos .rsync-filter por diretório que foram espalhados pela hierarquia e usam suas regras para filtrar os arquivos na transferência."

Meu .rsync-filter contém linhas como essas para filtrar esses "excrementos" que os Macs deixam para trás:

-p .DS_Store
-p ._*

Se estiver usando exclude em vez de apenas - , adicione uma vírgula. Por exemplo:

exclude,p .DS_Store
exclude,p Thumbs.db
    
por 20.10.2016 / 16:24
-2

apenas use as opções '--max-size = xx' e '--delete' do rsync. Ele fará tudo automaticamente e atenderá a todas as suas necessidades.

    
por 29.01.2013 / 16:28

Tags