2009-12-15 19 views
6

Quando rsync stampa i dettagli di ciò che ha fatto per ciascun file (utilizzando uno dei flag dettagliati) sembra includere sia i file che sono stati aggiornati sia i file che non sono stati aggiornati. Per esempio un frammento della mia produzione utilizzando il flag -v assomiglia a questo:Solo rsync riporta i file che sono stati aggiornati

rforms.php is uptodate 
robots.txt is uptodate 
sorry.html 
thankyou.html is uptodate 

Mi interessa solo i file che sono stati aggiornati. Nel caso precedente è sorry.html. Stampa anche i nomi delle directory mentre vengono inseriti anche se non ci sono file in quella directory che viene aggiornata. C'è un modo per filtrare i file e le directory aggiornati senza file aggiornati da questo output?

risposta

4

È possibile reindirizzare attraverso grep:

rsync -vv (your other rsync options here) | grep -v 'uptodate' 
+0

Su file in esecuzione lunghi non si otterranno progressi poiché grep non è interattivo. – srigi

+0

non funziona per la versione> = 3.0.7 (vedere http://serverfault.com/questions/401210/rsync-report-only-uploaded-files#comment418372_401215) –

+1

Voglio correggere, o almeno chiarire, cosa @jeff postato sopra e cosa ha sottolineato @KarlRichter. Penso che il problema non sia che 'rsync -v' non emetta più la stringa" uptodate ", ma piuttosto che devi usare' rsync -vv'. Nota i due 'v's. Ho appena verificato che funzioni su Ubuntu 14.04 con la versione 3.1.0 di 'rsync'. @jeff puoi aggiornare il tuo post per riflettere questo? –

3

uscita di Rsync può essere ampiamente personalizzato, dare un'occhiata a ; -v è un modo abbastanza grossolano per ottenere informazioni da un moderno rsync.

Nel tuo caso, non sono esattamente quello che consideri "aggiornato" nel significato. Ad esempio, cancellato anche sul ricevitore? Solo file/dirs, ma anche pipe e symlink? Mod/tempi di accesso o solo contenuti?

Come test semplice suggerisco di guardare: rsync --info=name1 <other opts>.

+0

che ne dici di aggiornato come in "toccato in alcun modo"? – Michael

0

Ecco il mio prendere ... (lavoro-collaudato e molto felice con esso.)

rsync -arzihv --stats --progress \ 
    /media/frank/foo/    \ 
    /mnt/backup_drive/ | grep -E '^[^.]|^$' 

Il bit importante è il -i per itemize.

Il grep consente tutti linee di uscita passano (anche le sintesi come in -h --stats, anche quelle vuote prima, che beneficia leggibilità) eccezione quelli che iniziano con un punto: Questi sono quelli, che describe unchanged files:

A . means that the item is not being updated (though it 
    might have attributes that are being modified). 
Problemi correlati