Utilizzo di uno script di shell per verificare se rsync ha apportato modifiche


10

Ho una sceneggiatura bash che le due directory di rsync. A volte c'è un cambiamento, le probabilità sono che non ci sia nulla.

Voglio eseguire un comando solo se rsync ha effettivamente apportato una modifica (aggiungi / aggiorna un file). Altrimenti voglio semplicemente saltarlo. C'è una risposta di ritorno che dovrei guardare?

Risposte:


11

Se si utilizza l'opzione -i (e non si utilizza l'opzione -v), rsync stamperà le linee su STDOUT solo per le modifiche apportate. A seconda del tuo script, questo potrebbe apparire come

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

Questo sembra fare esattamente quello che voglio ... grazie. Non ho pensato di usare la bandiera -i in quel modo.
raccolta

Per chiarire, se si desidera eseguire lo script solo se è stata apportata una modifica, ==dovrebbe essere !=.
hamx0r

Così com'è, questo codice è sbagliato da quello che ho visto. Per quanto riguarda quel codice lo ottieni Rsync ha eseguito FINE o HAS ERROR in esecuzione, ma questo codice non controlla se c'è stata una modifica. Non so se un'altra versione di Rsync potrebbe farlo, ma sto usando RSYNC in Raspbmc (una vecchia implementazione che abbiamo) e OSMC. Questo è triste poiché RSYNC sembra essere uno strumento meraviglioso.

2
Con il -iflag - la versione di rsync viene 3.1.1emessa sending incremental file listquando non vengono apportate modifiche.
Dor
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.