Как просмотреть индикатор выполнения при запуске rsync?

31

Я использую Ubuntu 12.04 в качестве репозитория и хотел бы видеть индикатор выполнения при использовании rsyncиз командной строки. Я попробовал вариант, предложенный в этой статье ( -P), но я предпочитаю видеть индикатор выполнения, а не использовать Grsync. Я использую в rsync -P source destнастоящее время.

Джозеф Смит
источник
Вы читали это? stackoverflow.com/questions/238073/…
AB
Я ценю быстрый ответ. Я с нетерпением жду исследования этого.
Джозеф Смит
Это было хорошее начало, но мне нужно знать, как обновлять индикатор выполнения во время работы rsync. Друг сказал, что мне нужно реализовать размер сервера и реализовать команду watch с pipe.
Джозеф Смит
Есть ответ :)
AB

Ответы:

7

Как насчет этого?

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

    1. a/ это источник
    2. b является целью
AB
источник
1
@JosephSmith Ты был удовлетворен моим ответом? Тогда дай мне голос (∧). Если бы я мог решить вашу проблему, было бы хорошо, если бы вы отметили мой ответ (✓). ;)
AB
Я принял это пару дней назад с широкой улыбкой. Я просто не выбрал и принял это снова, хотя. Я не думаю, что смогу проголосовать, потому что мне не хватает кредита. Спасибо за помощь, кстати.
Джозеф Смит
Любые идеи, почему я получаю ошибку, не найден файл или каталог? Я запускаю команду: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / убунту / индексы | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
Джозеф Смит
1
"$rsync_param"nдовольно странно; кавычки означают, что он может работать только с опциями без пробелов, а присоединение nк концу означает, что он может работать только с короткими опциями. Гораздо яснее и проще - просто $rsync_param -n, что определяет пробный прогон, не полагаясь на формат rsync_param, и, не цитируя его, также можно включить длинные опции
Izkata
Работал первый раз, но заметил, что не показывает скорость передачи
Ciasto piekarz
36

В 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)

Обратите внимание, что когда начинается передача, общее количество фрагментов и, следовательно, текущий прогресс могут измениться, если используется рекурсивная опция, поскольку для синхронизации обнаруживается больше файлов

Джон
источник
16

Вы можете использовать --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
беглец
источник
2
Это работало для меня на macOS.
манго
2

Это наконец-то сработало:

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)
Джозеф Смит
источник
1

Если ваша версия rsyncне принимает --info=progress2опцию, вы можете использовать tqdm:

Установить:

pip install tqdm

Использовать:

$ rsync -av / source / dest | tqdm --unit_scale | туалет
10,0 Мит [00:02, 3,58 Мит / с]
ostrokach
источник
0

Да, делай то, что сказал Джон : используйте --info=progress2опцию. Но что мне делать, если моя версия rsync слишком старая и не поддерживает эту опцию? Ответ: обновить rsync!

Вот как собрать rsyncиз исходного кода на Ubuntu

(проверено на Ubuntu 16.04)

  1. Загрузите последнюю версию rsync: https://download.samba.org/pub/rsync/src/ . Пример: "rsync-3.1.3.tar.gz". Сохраните его в каталоге без пробелов на всех, чтобы убедиться, что он собирается правильно.
  2. В обозревателе папок щелкните его правой кнопкой мыши и перейдите к «Извлечь здесь».
  3. Войдите в извлеченную папку (например: "rsync-3.1.3")
  4. Щелкните правой кнопкой мыши по экрану в менеджере папок и перейдите к «Открыть в терминале». Либо выполните шаги 2–4 вручную в командной строке. В конечном итоге вам просто нужно попасть cdв этот извлеченный каталог, содержащий rsyncисходный код.
  5. Проверьте текущую версию rsync. Запишите это, чтобы потом было видно, что он действительно обновился.

    rsync --version
    
  6. Установите необходимые инструменты:

    sudo apt update
    sudo apt install yodl
    
  7. Телосложение:

    ./configure
    make
    sudo make install
    
  8. Убедитесь, что оно было обновлено:

    rsync --version
    

    Пример вывода:

    $ rsync --version
    rsync  version 3.1.3  protocol version 31
    Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
        64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
        socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
        append, no ACLs, xattrs, iconv, symtimes, prealloc
    
    rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
    are welcome to redistribute it under certain conditions.  See the GNU
    General Public Licence for details.
    
  9. Поиск страниц справки для "progress2". Теперь у вас будет доступ к --info=progress2опции:

    man rsync
    

    ... затем нажмите /клавишу и введите progress2; нажмите Enter, чтобы найти его; нажмите nдля поиска n'ext, пока не найдете нужную запись:

    Существует также --info=progress2опция, которая выводит статистику на основе всей передачи, а не отдельных файлов. Используйте этот флаг без вывода имени файла (например, избегайте -vили указывайте --info=name0), если вы хотите увидеть, как происходит передача без прокрутки экрана с большим количеством имен. (Вам не нужно указывать --progressопцию для использования --info=progress2.)

Также смотрите: «Как использовать rsync», Габриэль Стейплс: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Частичные ссылки:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Габриэль Стейплс
источник