Menggunakan skrip shell untuk memeriksa apakah rsync membuat perubahan

10

Saya punya skrip bash yang berisi dua direktori rsync. Terkadang ada perubahan, kemungkinan tidak ada apa-apa.

Saya ingin menjalankan perintah hanya jika rsync benar-benar membuat perubahan (tambah / perbarui file). Kalau tidak, saya hanya ingin melewatkannya. Apakah ada respons balik yang harus saya perhatikan?

raccettura
sumber

Jawaban:

11

Jika Anda menggunakan opsi -i (dan tidak menggunakan opsi -v), rsync hanya akan mencetak baris ke STDOUT untuk setiap perubahan yang dibuat. Tergantung pada skrip Anda, ini bisa terlihat seperti

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi
Greg D'Arcy
sumber
Tampaknya melakukan persis apa yang saya inginkan ... terima kasih. Tidak terpikir untuk menggunakan flag -i seperti itu.
raccettura
Untuk memperjelas, jika Anda ingin menjalankan skrip hanya jika ada perubahan, maka ==harus dilakukan !=.
hamx0r
Ya, kode ini salah dari yang saya lihat. Sedangkan untuk kode itu Anda mendapatkannya Rsync menjalankan FINE atau HAS ERROR berjalan, tetapi kode ini tidak memeriksa apakah ada perubahan. Saya tidak tahu apakah versi lain dari Rsync dapat melakukannya, tetapi saya menggunakan RSYNC di Raspbmc (implementasi lama yang kami miliki) dan OSMC. Ini menyedihkan karena RSYNC tampaknya menjadi alat yang luar biasa.
2
Dengan versi -iflag - rsync di- 3.1.1output sending incremental file listketika tidak ada perubahan.
Dor