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?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.