Eu tenho um script que usa o rsync para sincronizar dados em um cenário remoto -> local. Imediatamente após a execução do comando rsync, verifique se o código de erro é igual a zero ou não. Se for zero, outros comandos serão executados. No entanto, isso não leva em conta o fato de que o rsync pode ter sido executado com êxito, mas na verdade não fez nenhuma alteração. Por esse motivo, a condição igual a zero será executada independentemente, o que é um pouco redundante.
rsync -aEivm --delete /path/to/remote/ /path/to/local/
if [ $? -eq 0 ]; then
# Success do some more work!
else
# Something went wrong!
exit 1;
fi
Qual seria a melhor abordagem para expandir isso e verificar se realmente houve alguma alteração com base no comando rsync executado. Eu li que o sinalizador -i pode fornecer saída para o stdout, mas como isso pode ser colocado em um bloco condicional?
a=$("rsync command")
. Isto executar o rsync
comando e armazenar stdout
em a
. Em seguida, você pode executar testes ema
| grep /
ou algo parecido e verificar o status de saída do grep $?
, deve ser 1 se não houver saída.
-v
lá, por isso já está fornecendo as informações necessárias para sair ... por exemplo, uma lista de arquivos que foram realmente enviados. Se nada mudar, isso é justo./
.