Usando um script de shell para verificar se o rsync fez alguma alteração

10

Eu tenho um script bash que contém os dois diretórios do rsync. Às vezes há uma mudança, as chances são de que não há nada.

Eu quero executar um comando apenas se o rsync realmente fez uma alteração (adicionar / atualizar um arquivo). Caso contrário, eu quero apenas pular. Existe uma resposta de retorno que eu deveria estar olhando?

raccettura
fonte

Respostas:

11

Se você usar a opção -i (e não a opção -v), o rsync imprimirá apenas linhas no STDOUT para todas as alterações feitas. Dependendo do seu script, isso pode parecer

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi
Greg D'Arcy
fonte
Isso parece fazer exatamente o que eu quero ... obrigado. Não pensou em usar a bandeira -i assim.
Raccettura
Para esclarecer, se você deseja executar o script apenas se uma alteração foi feita, ==deve ser !=.
hamx0r
Bem, este código está errado com o que vi. Quanto ao código, você o obtém Rsync executou FINE ou TEM ERRO em execução, mas esse código não verifica se houve uma alteração. Não sei se outra versão do Rsync poderia fazer isso, mas estou usando o RSYNC no Raspbmc (uma implementação antiga que temos) e no OSMC. Isso é triste, pois o RSYNC parece ser uma ferramenta maravilhosa.
2
Com a -ibandeira - a versão rsync é 3.1.1exibida sending incremental file listquando nenhuma alteração é feita.
Dor