Rsync'in herhangi bir değişiklik yapıp yapmadığını kontrol etmek için kabuk komut dosyası kullanma


10

Rsync'in iki dizininde bash betiđim var. Bazen bir değişiklik olur, ihtimaller yoktur.

Bir komutu yalnızca rsync aslında bir değişiklik yaptığında (dosya ekleme / güncelleme) çalıştırmak istiyorum. Aksi takdirde sadece atlamak istiyorum. Bakmam gereken bir dönüş yanıtı var mı?

Yanıtlar:


11

-İ seçeneğini kullanırsanız (ve -v seçeneğini kullanmazsanız), rsync yapılan değişiklikler için satırları yalnızca STDOUT'a yazdırır. Senaryonuza bağlı olarak, bu

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

Bu tam olarak istediğimi yapıyor gibi görünüyor ... teşekkürler. -İ bayrağını böyle kullanmayı düşünmedim.
raccettura

Açıklığa kavuşturmak için, komut dosyasını yalnızca bir değişiklik yapıldığında çalıştırmak istiyorsanız , ==olması gerekir !=.
hamx0r

Olduğu gibi, bu kod gördüğümden yanlış. Bu kod gelince Rsync FINE koştu ya da HAS EROR çalışıyor, ancak bu kod bir değişiklik olup olmadığını kontrol etmez. Rsync'in diğer sürümünün bunu yapabileceğini bilmiyorum, ama Raspbmc (sahip olduğumuz eski bir uygulama) ve OSMC'de RSYNC kullanıyorum. RSYNC harika bir araç gibi göründüğü için bu üzücü.

2
İle -ibayrak - rsync sürüm 3.1.1çıkışları sending incremental file listherhangi bir değişiklik yapıldığında.
Dor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.