Вопрос: rsync - отправлять только загруженные файлы


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

Я хотел бы иметь rsync quiet Кроме для файлов, которые фактически должны были быть загружены в дальний конец. Есть ли флаг для активации такого рода отчетов? Я не могу найти это в документации


11
2018-06-22 07:01


Источник




Ответы:


Да, проверьте -i флаг. Он дает отчет о каждой операции в загадочном формате. См. Справочную страницу для точного определения формата.

Чтобы получить список файлов, отправленных на удаленный хост, вы можете использовать следующее:

rsync <options> -i <src> <dst> | grep '^<' | awk '{ print $2 }'

10
2018-06-22 07:14



Это снова сообщает все файлы, а не измененные. - dangonfast
@gonvaled Нет, выводятся только файлы, которые отправляются на удаленный хост (как <fcstpoguax filename, где разные флаги показывают, почему их нужно обновлять). Если он сообщает обо всех файлах, что-то может быть неправильным с вашим тестом или вашей средой. - Oliver
Я думаю, вы правы. Я взглянул на man-страницу, и это описано, как вы говорите. Но моя система сообщает все файлы. Может быть, что-то не так с дальним концом ... - dangonfast
Мммм. приближаясь: строка отчетности (для всех файлов) <f..T......, Согласно man-странице, это связано с метками времени. - dangonfast
Вы вызываете rsync с помощью --times? - Oliver


rsync с одним -v фактически печатает только переданные файлы. Если каждый раз, когда вы получаете полный список, это, вероятно, означает, что алгоритм сравнения rsync src / dest по умолчанию, основанный на времени модификации + размер, не подходит для вашего случая. Вы можете добавить -c (--checksum), который заставляет rsync сравнивать файлы с помощью контрольных сумм. Обратите внимание, что это, очевидно, накладывает некоторые накладные расходы ввода-вывода.

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


4
2018-01-14 09:04



--info=flist доступен только в rsync> = 3.1, который недоступен везде. Например, macOS поставляется с древней версией 2.6.9, поскольку Rsync v3 является unter GPL 3. - chiborg


вот как я это сделал. Я не думаю, что для этого есть флаг, но теперь может быть

rsync -v [other options] | grep -v 'uptodate'

0
2018-06-22 07:14



Мой rsync (версия 3.0.7) не добавляет uptodate к отчетности, поэтому невозможно отфильтровать это. - dangonfast
Я хочу исправить или, по крайней мере, уточнить, что Майк написал выше и что @ jeckyll2hide указал. Я думаю, проблема не в том, что rsync -v больше не испускает строку «uptodate», а скорее вам нужно использовать rsync -vv. Обратите внимание на два варианта, и я просто подтвердил, что это работает на Ubuntu 14.04 с rsync версии 3.1.0. Майк, можете ли вы обновить свой пост, чтобы это отразить? - John Mark Mitchell


одна вещь, которая приходит мне на ум, использует более подробный формат журнала и awk'ing из того, что вы хотите получить.

например:

rsync -a --out-format="%b  %i %f" /etc/ /tmp/qq/ |awk '{if ($1>0) {print $3}}'

это не очень надежный, он не будет хорошо обрабатывать имена файлов с пробелами.


0
2018-06-22 07:29





1. Используйте -i вариант

Для этих знаковых (или: загадочных) флагов изменения. Вы будете выглядеть следующим образом:

*deleting   DSC00012 (copy).JPG
.d..tp..... ./
.f...p..... DSC00011.JPG
>f+++++++++ DSC00012 (copy2).JPG
>f.stp..... DSC00012.JPG
.f...p..... DSC00014.JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
... more statistic stuff
sent 636.01K bytes  received 4.63K bytes  1.28M bytes/sec
total size is 2.84M  speedup is 4.44

2. grep каждую строку, начинающуюся с точки.

Пусть все остальные строки (также пустые, для разборчивости) пройдут:

rsync -arz -i --stats -h ... /mnt/FooDrive/ /mnt/backup  | grep -E '^[^.]|^$'

И вот мы :-) - То, что доктор приказал:

*deleting   DSC00012 (copy2).JPG
>f.stp..... DSC00011.JPG
>f+++++++++ DSC00012 (copy).JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
...

Избегание точек скорее, чем охота на  > имеет также преимущество, чтобы статистика, а также возможные ошибки, предупреждения и т. д. проходили через ...

Наличие статистики в конце - это личное предпочтение. Не использовать -h --stats если вам это не нравится. Я предполагаю, что ваш основной интерес заключается в том, чтобы не видеть сотни или тысячи неизменных файлов, прокручиваемых ...


0
2018-02-26 11:46