J'ai un script qui utilise rsync pour synchroniser les données dans un scénario distant -> local. Immédiatement après l'exécution de la commande rsync, vérifiez si le code d'erreur est égal à zéro ou non. Si son zéro, d'autres commandes sont exécutées. Cependant, cela ne prend pas en compte le fait que rsync a pu s'exécuter correctement mais n'a en fait apporté aucune modification. De ce fait, la condition zéro égal fonctionnera indépendamment, ce qui est un peu redondant.
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
Quelle serait la meilleure approche pour développer cela afin de vérifier s'il y avait réellement des changements basés sur la commande rsync qui a été exécutée. J'ai lu que l'indicateur -i peut fournir une sortie à stdout, mais comment cela peut-il être placé dans un bloc conditionnel?
a=$("rsync command")
. Ceci exécuter la rsync
commande et le magasin stdout
en a
. Ensuite, vous pouvez exécuter des tests sura
| grep /
ou quelque chose comme ça, puis vérifier l'état de sortie de grep avec $?
, il devrait être 1 s'il n'y a pas de sortie.
-v
, donc il fournit déjà les informations dont vous avez besoin pour sortir ... par exemple, une liste des fichiers qui ont été réellement envoyés. Si rien n'est changé, c'est juste./
.