Quanto à primeira parte da resposta: Como fazê-lo funcionar como Robocopy / MIR (/ PURGE),
Acontece que o rsync tem um
--delete-excluded
alternar.
Isso resolve o problema.
Eu uso meu NAS para fazer backup de vários sistemas menores que monitoram a usina solar, usando o rsync. Isso funciona muito bem. Agora quero fazer backup de todo o drive NAS.
Existem subdiretórios para cada máquina linux - 8 deles.
Como eu aprendi mais e afinei minhas exclusões, vejo um monte de sobras que eu esqueci de excluir antes.
No passado, excluí os diretórios /lost+found
, mas não pensei em /.trash-1000
e agora há muitos deles.
Simply adding them to the
--exclude
list, even with--delete
doesn't delete them because exclude makes the rsync program skip them entirely.
Não funciona da mesma forma que o Robocopy / MIR.
Então vamos começar com o .Trash e eu acho que a resposta vai me ajudar se eu encontrar outros que eu originalmente esqueci de excluir.
Obviamente, uma solução é excluir o diretório inteiro de cada servidor e, em seguida, executar novamente um rsync completo com o novo conjunto de exclusões.
Mas isso é muito trabalho, para dizer o mínimo.
Então, minha pergunta é, quando faço um rsync completo da unidade NAS, existe uma maneira genérica de excluir todas as pastas .Trash-1000? Se isso funcionar, posso trocar as unidades e retomar as operações com a unidade de limpeza.
I'm looking for something like this:
--exclude="*.Trash*"
...so it would not copy them, regardless of their location in the directory structure.
Eu realmente quero saber como fazer isso com o rsync e estou procurando uma solução para o problema de como adicionar exclusões faz com que o rsync as ignore em vez de excluí-las.
Como alternativa, em vez de fazê-lo durante os rsyncs, gostaria de receber uma resposta que mostraria como procurar e destruir esses diretórios na unidade NAS original.
rsync - Como fazê-lo excluir diretórios ou arquivos adicionados recentemente à lista de exclusões
Aqui estão alguns Q & A que falam sobre a alternativa:
Como excluir diretórios baseados em find
output?
Como remover pastas com um determinado nome
localize + exclua arquivos que contenham “.”
E entre eles, acredito que minha melhor opção para o problema imediato é removê-los da unidade original, executando isso no diretório que contém os backups completos dos outros sistemas:
cd /mnt/full
sudo rm -rf 'sudo find -type d -name '.Trash-1000''
Pesquise e destrua, hoo-rah!
Funcionou e fará com que o futuro rsync funcione mais rápido no futuro.
No entanto, isso não resolve o bug do rsync.
Se alguém tiver uma resposta que fará com que os diretórios de exclusão rsync sejam adicionados posteriormente à lista --exclude
, essa seria a resposta que aceito de bom grado.