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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.