Saya memiliki skrip yang menggunakan rsync untuk menyinkronkan data dalam skenario lokal - jauh. Segera setelah perintah rsync dijalankan, centang untuk melihat apakah kode kesalahan sama dengan nol atau tidak. Jika nol, perintah lebih lanjut dilakukan. Namun ini tidak memperhitungkan fakta bahwa rsync mungkin telah berjalan dengan sukses tetapi tidak benar-benar membuat perubahan. Karena ini kondisi nol sama akan berjalan terlepas, yang sedikit berlebihan.
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
Apa yang akan menjadi pendekatan terbaik untuk memperluas ini untuk memeriksa apakah sebenarnya ada perubahan berdasarkan perintah rsync yang berjalan. Saya telah membaca bahwa flag -i dapat memberikan output ke stdout, tetapi bagaimana ini bisa ditempatkan di blok bersyarat?
a=$("rsync command")
. Ini akan menjalankan rsync
perintah dan menyimpan stdout
di a
. Kemudian Anda dapat menjalankan tes padaa
| grep /
atau sesuatu seperti itu, lalu periksa status keluar dari grep $?
, itu harus 1 jika tidak ada output.
-v
ke sana, sehingga sudah menyediakan informasi yang Anda butuhkan untuk stdout ... misalnya, daftar file yang sebenarnya dikirim. Jika tidak ada yang berubah, itu baru saja./
.