
Я использую Ubuntu 12.04 в качестве репозитория и хотел бы видеть индикатор выполнения при использовании rsync
из командной строки. Я попробовал опциюпредложено в этой статье( -P
), но я предпочитаю видеть полосу прогресса и не использовать Grsync. Я использую rsync -P source dest
в настоящее время.
решение1
rsync имеет --info
опцию, которую можно использовать для вывода не только текущего прогресса, но также скорости передачи и прошедшего времени:
--info=FLAGS fine-grained informational verbosity
Объяснение того, как его использовать, можно найти в разделе « -P
Опции» на странице руководства:
-P The -P option is equivalent to --partial --progress. Its purpose is to
make it much easier to specify these two options for a long transfer that
may be interrupted.
There is also a --info=progress2 option that outputs statistics based on
the whole transfer, rather than individual files. Use this flag
without out‐putting a filename (e.g. avoid -v or specify --info=name0)
if you want to see how the transfer is doing without scrolling the screen
with a lot of names. (You don’t need to specify the --progress
option in order to use --info=progress2.)
Итак, следующее:
rsync -r --info=progress2 --info=name0 "$src" "$dst"
В результате выводятся и постоянно обновляются следующие данные:
18,757,542,664 100% 65.70MB/s 0:04:32 (xfr#1389, to-chk=0/1510)
Обратите внимание, что при запуске передачи общее количество фрагментов и, следовательно, текущий прогресс могут измениться при использовании рекурсивной опции по мере обнаружения дополнительных файлов для синхронизации.
решение2
Вы можете использовать параметры --progress
и --stats
.
$ rsync -avzh --progress --stats root@server:/path/to/file output_name
root@server's password:
receiving incremental file list
file
98.19M 54% 8.99MB/s 0:00:08
-a, --archive
-v, --verbose
-z, --compress
-h, --human-readable
--progress This option tells rsync to print information showing
the progress of the transfer. This gives a bored user something to
watch. Implies --verbose if it wasn’t already specified.
--stats This tells rsync to print a verbose set of statistics on
the file transfer, allowing you to tell how effective rsync’s
delta-transfer algorithm is for your data.
решение3
Как насчет этого?
rsync_param="-av"
rsync "$rsync_param" a/ b |\
pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
$rsync_param
Позволяет избежать двойного ввода параметров
$(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
Определяет количество шагов для выполнения.
a/ b
a/
является источникомb
это цель
решение4
Наконец-то это сработало:
rsync "$rsync_param" -a --prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)