Ao usar 'find ..' no rsync, a opção --delete do rsync não está funcionando

0

Estou usando

rsync -avh --progress --delete 'find /path/to/files -type f -printf "%p\n" | sort -rn | head -n 5' /path/to/backup/

para fazer backup dos 5 arquivos mais recentes. A opção --delete deve excluir os arquivos na pasta de destino, se eles não estiverem nos 5 arquivos que encontrarem saídas. Infelizmente, a opção --delete não está funcionando. Como fazê-lo funcionar ou como fazer o que faço diferente?

    
por rsyncUser 27.09.2017 / 14:30

2 respostas

1

O manual rsync afirma:

--delete

This tells rsync to delete extraneous files from the receiving side (ones that aren’t on the sending side), but only for the directories that are being synchronized.

Você está transmitindo vários arquivos individuais, portanto, --delete não funcionará.

    
por 27.09.2017 / 15:15
0

Parece que ainda não tenho reputação suficiente para comentar sua pergunta, então farei isso em uma resposta.

Primeiro, acho que ajudaria se você postasse os nomes dos arquivos com os quais está trabalhando. Também me pergunto qual é a estrutura do subdiretório em /path/to/files . Digo isso porque quero saber se o find que você está executando está realmente imprimindo os arquivos mais recentes. Você não está operando com timestamps aqui, e é por isso que eu pergunto. Então, nessa nota, talvez você queira colar também a saída da descoberta para ajudar a esclarecer.

Além disso, estou me perguntando se o -n on sort é necessário. Sorta ao lado do ponto, mas você poderia fazer um sort | tail -5 .

Sem ver mais resultados sobre seus arquivos, inclusive no destino, não sei se esse tipo de rsync --delete funcionará. Isso já funcionou para você, ou você está vendo isso agora?

Como alternativa, você pode procurar em sinalizadores -newer, -delete e / ou mtime de find.

    
por 27.09.2017 / 15:02