rsync via cron. Come abilito la registrazione?


8

Sto eseguendo il backup di un server remoto su un altro computer utilizzando rsync.

In cron.daily ho un file con questo:

rsync -avz -e ssh root@example.com:/ /mybackup/

Utilizza una coppia di chiavi pubblica / privata per accedere. Questo sembra funzionare bene per la maggior parte del tempo, tuttavia, lo ho (stupidamente) verificato davvero solo guardando le date su alcuni file importanti (dump MySQL) che conosco cambiare ogni giorno. Ovviamente, potrebbe verificarsi un errore dopo quel file.

A volte fallisce. Quando lo eseguo manualmente, a volte succede qualcosa come "reset client".

Qual è il modo migliore per registrarlo in modo da poter verificare con certezza se è stato completato o no? Il registro cron non indica alcun errore. Non l'ho provato, ma la pagina man rsync sulla versione vecchia di CentOS sulla macchina di backup non mostra l'opzione --log-file. Immagino di poter reindirizzare stdout con> ma non voglio davvero sapere di ogni file. Voglio solo sapere se tutto ha funzionato o no ..

Grazie

Risposte:


13

Penso che tu abbia già risolto la tua domanda. Se reindirizzi sia stdout che stderr su un file, non otterrai l'output per ogni trasferimento rsync di file - questo viene prodotto solo se stai eseguendo in -vmodalità verbose ( ). Il comportamento predefinito di rsyncè di produrre output solo in caso di errore. Quindi puoi farlo ...

rsync ... > /var/log/rsync.log 2>&1

... e ispeziona quel file per vedere se l'ultimo rsync ha avuto successo o no. Sto usando esplicitamente >, che sovrascriverà il file di registro ogni volta che rsyncviene eseguito.

Potresti anche approfittare del fatto che rsyncesce con un codice diverso da zero quando il trasferimento fallisce, quindi potresti fare qualcosa del genere:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com

Grazie. Ci proverò. Supponevo di avere tutti i file nel registro perché è quello che vedo sullo schermo se lo provo manualmente senza dettagli. La cosa della posta sembra buona.
Tetranz,

Se stai eseguendo rsync manualmente senza il -vflag e stai ancora visualizzando l'output per file, c'è qualcosa che non va. La pagina man di rsync dice "Per impostazione predefinita, rsync funziona in silenzio. Una singola -v ti darà informazioni su quali file vengono trasferiti e un breve riepilogo alla fine."
Larks

Bene, questo è sicuramente quello che sta succedendo. -v sembra essere attivo di default. Ho appena fatto il reindirizzamento del registro come suggerisci e il registro ha una riga per ogni file. Non sto dicendo che ti sbagli. CentOS deve aver compilato rsync in modo diverso. Ho aggiunto esclude per / proc e / sys.
Tetranz,

Sto eseguendo CentOS e rsync si comporta come descritto. Che aspetto ha la tua riga di comando?
Larks

1
Vedi, stai correndo in modalità dettagliata. Hai un -vlì.
Larks

4

Estrarre l'opzione -v e aggiungere -q. Questo darà solo gli errori


1

Forse potresti usare syslog tramite il comando: logger .

Eseguo gli script in questo modo:

rsync -v what user@host 2>&1 | logger -t backup

Questo scriverà per /var/log/messagesimpostazione predefinita.

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.