Como posso visualizar uma barra de progresso ao executar o rsync?

8

Boa tarde,

Estou usando o Ubuntu 12.04 como repositório e gostaria de ver uma barra de progresso ao usar o rsync na linha de comando. Eu tentei a opção de link (-P), mas eu prefiro ver um progresso barra e não usando Grsync. Eu entendo isso não pode ser fácil, mas eu sou pago a cada hora, então está bem por mim. Estou usando "rsync -P source dest" atualmente.

    
por Joseph Smith 14.04.2015 / 21:04

5 respostas

5

Que tal isso?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    Evita a entrada dupla de parâmetros

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    Determina o número de etapas para concluir.

  • a/ b

    1. a/ é a fonte
    2. b é o alvo
por A.B. 15.04.2015 / 09:46
9

O rsync tem uma opção --info que pode ser usada não apenas para a saída do progresso atual, mas também para a taxa de transferência e o tempo decorrido:

--info=FLAGS            fine-grained informational verbosity

A explicação de como usá-lo vem na opção -P na página man:

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

Então, o seguinte:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

Os resultados a seguir são produzidos e atualizados continuamente:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

Observe que, quando a transferência começa, o número total de partes e, portanto, o progresso atual, pode mudar quando a opção recursiva é usada à medida que mais arquivos são descobertos para sincronização

    
por Jon 22.04.2017 / 13:46
2

Isso finalmente funcionou:

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)
    
por Joseph Smith 28.04.2015 / 14:29
2

Você pode usar os parâmetros --progress e --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
    
por fugitive 23.04.2017 / 14:04
1

Se a sua versão de rsync não aceitar a opção --info=progress2 , você poderá usar tqdm :

Para instalar:

pip install tqdm

Para usar:

$ rsync -av /source /dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit/s]
    
por ostrokach 26.07.2017 / 22:10

Tags