Rsync только файлы отчетов, которые были обновлены - PullRequest
7 голосов
/ 15 декабря 2009

Когда rsync распечатывает подробности того, что он сделал для каждого файла (используя один из подробных флагов), он включает как файлы, которые были обновлены, так и файлы, которые не были обновлены. Например, фрагмент моего вывода с использованием флага -v выглядит следующим образом:

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

Меня интересуют только файлы, которые были обновлены. В приведенном выше случае это sorry.html. Он также печатает имена каталогов по мере их ввода, даже если в этом каталоге нет файлов, которые будут обновлены. Есть ли способ отфильтровать файлы и каталоги обновлений без обновленных файлов из этого вывода?

Ответы [ 3 ]

5 голосов
/ 11 декабря 2013

Выход Rsync может быть тщательно настроен, взгляните на rsync --info=help; -v - довольно грубый способ получения информации от современного rsync.

В вашем случае, я не уверен, что именно вы считаете "обновленным". Например, удалил на ресивере тоже? Только файлы / каталоги, а также каналы и символические ссылки тоже? Мод / время доступа или только контент?

В качестве простого теста я предлагаю вам взглянуть на: rsync --info=name1 <other opts>.

4 голосов
/ 15 декабря 2009

Вы можете передать это через grep:

rsync -vv (your other rsync options here) | grep -v 'uptodate'
2 голосов
/ 01 марта 2017

Вот мой дубль ... (проверенный работой и очень довольный.)

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

Важным битом является -i для itemize.

grep позволяет всем выходным строкам проходить (также любые сводные данные, как в -h --stats, также пустые до этого, что обеспечивает удобочитаемость) , за исключением тех, которые начинаются с точки: это те, которые описывают неизмененные файлы :

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