2009-12-15 2 views
6

Lorsque rsync imprime les détails de ce qu'il a fait pour chaque fichier (en utilisant l'un des drapeaux verbeux), il semble inclure les fichiers mis à jour et les fichiers non mis à jour. Par exemple, un extrait de ma sortie en utilisant le drapeau -v ressemble à ceci:Rsync ne signale que les fichiers qui ont été mis à jour

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

Je suis seulement intéressé sur les fichiers qui ont été mis à jour. Dans le cas ci-dessus c'est sorry.html. Il imprime également les noms de répertoires lors de leur saisie même s'il n'y a pas de fichier dans ce répertoire mis à jour. Existe-t-il un moyen de filtrer les fichiers et répertoires non modifiés avec aucun fichier mis à jour à partir de cette sortie?

Répondre

4

Vous redirigeriez par grep:

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

Sur des fichiers longs, vous n'obtiendrez pas de progression puisque grep n'est pas interactif. – srigi

+0

ne fonctionne pas pour la version> = 3.0.7 (voir http://serverfault.com/questions/401210/rsync-report-only-uploaded-files#comment418372_401215) –

+1

Je veux corriger, ou au moins clarifier, ce que @jeff posté ci-dessus et ce que @KarlRichter a souligné. Je pense que le problème n'est pas que 'rsync -v' n'émette plus la chaîne" uptodate "mais plutôt que vous devez utiliser' rsync -vv'. Notez les deux 'v's. Je viens de vérifier cela fonctionne sur Ubuntu 14.04 avec 'rsync' version 3.1.0. @jeff pouvez-vous mettre à jour votre message pour refléter cela? –

3

la sortie de Rsync peut être largement personnalisé, jetez un oeil à ; -v est un moyen assez grossier d'obtenir des informations à partir d'un rsync moderne.

Dans votre cas, je ne suis pas sûr de ce que vous considérez exactement comme «à jour». Par exemple, supprimé sur le récepteur aussi? Seulement les fichiers/répertoires, mais aussi les tuyaux et les liens symboliques? Mod/temps d'accès ou seulement du contenu?

Comme un test simple, je vous suggère de regarder: rsync --info=name1 <other opts>.

+0

que diriez-vous mis à jour comme dans "touché de quelque façon"? – Michael

0

Voici mon ... (travail éprouvée et très heureux avec elle.)

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

Le bit important est le -i pour itemize.

Le grep permet passent toutes les lignes de sortie (également tout résumé comme -h --stats, ceux aussi vides avant que, qui bénéficie de lisibilité) sauf ceux commençant par un point: Ce sont ceux qui describe unchanged files:

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