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

31

Estou usando o Ubuntu 12.04 como um repositório e gostaria de ver uma barra de progresso ao usar rsyncna linha de comando. Tentei a opção sugerida neste artigo ( -P), mas prefiro ver uma barra de progresso e não usar o Grsync. Estou usando rsync -P source destatualmente.

Joseph Smith
fonte
Agradeço a resposta rápida. Estou ansioso para pesquisar isso.
Joseph Smith
Esse foi um bom começo, mas preciso saber como atualizar a barra de progresso enquanto o rsync está funcionando. Um amigo disse que eu preciso implementar o tamanho do servidor e implementar um comando watch com pipe.
Joseph Smith
Existe uma resposta :)
AB

Respostas:

7

Que tal agora?

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

    Evita entrada dupla de parâmetros

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

    Determina o número de etapas a serem concluídas.

  • a/ b

    1. a/ é a fonte
    2. b é o alvo
AB
fonte
1
@JosephSmith Você ficou satisfeito com a minha resposta? Então me dê um voto positivo (∧). Se eu pudesse resolver seu problema, seria bom se você marcasse minha resposta (✓). ;)
AB
Aceitei isso há alguns dias com um grande sorriso. Acabei de selecionar e aceitei novamente. Eu não acho que posso votar porque não tenho crédito suficiente. Obrigado pela assistência btw.
Joseph Smith
Alguma idéia de por que recebo um erro, nenhum arquivo ou diretório encontrado? O comando que eu executo é: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --une-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / índices | pv -lep -s $ (rsync "$ rsync_param" em archive.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"né bastante estranho; as aspas significam que ele só pode funcionar em opções sem espaços, e anexá n-lo ao final significa que ele só pode funcionar com opções curtas. Muito mais claro e mais fácil é simplesmente $rsync_param -n, que especifica secar prazo sem depender do formato de rsync_parame por não citá-la, opções longas poderiam ser incluídos também
Izkata
Trabalhou primeira vez, a não ser notado que não taxa de transferência exibe
ciasto Piekarz
36

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

--info=FLAGS            fine-grained informational verbosity

A explicação de como usá-lo vem sob a -Popção na página do manual:

-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 são apresentados a seguir 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 inicia, o número total de blocos e, portanto, o progresso atual, pode mudar quando a opção recursiva é usada, à medida que mais arquivos são descobertos para sincronização

Jon
fonte
16

Você pode usar --progresse --statsparâmetros.

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
fugitivo
fonte
2
Isso funcionou para mim no macOS.
mango
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)
Joseph Smith
fonte
1

Se sua versão do rsyncnão aceitar a --info=progress2opção, você poderá usar tqdm:

Para instalar:

pip install tqdm

Usar:

$ rsync -av / fonte / dest | tqdm --unit_scale | wc -l
10,0Mit [00:02, 3,58Mit / s]
ostrokach
fonte
0

Sim, faça o que Jon disse : use a --info=progress2opção Mas, o que faço se minha versão do rsync for muito antiga e não suportar essa opção? Resposta: atualize o rsync!

Veja como construir a rsyncpartir da fonte no Ubuntu

(testado no Ubuntu 16.04)

  1. Faça o download da versão mais recente do rsync: https://download.samba.org/pub/rsync/src/ . Ex: "rsync-3.1.3.tar.gz". Salve-o em um diretório SEM ESPAÇOS, para garantir a criação correta.
  2. No seu explorador de pastas, clique com o botão direito do mouse e vá em "Extrair Aqui".
  3. Digite a pasta extraída (ex: "rsync-3.1.3")
  4. Clique com o botão direito do mouse na tela do seu gerenciador de pastas e vá para "Abrir no Terminal". Como alternativa, execute as etapas 2 a 4 manualmente na linha de comando. Por fim, você só precisa ser cded neste diretório extraído que contém o rsynccódigo-fonte.
  5. Verifique a versão atual do rsync. Anote isso para que você possa ver mais tarde que ele foi atualizado.

    rsync --version
    
  6. Instale as ferramentas necessárias:

    sudo apt update
    sudo apt install yodl
    
  7. Construir:

    ./configure
    make
    sudo make install
    
  8. Verifique se ele foi atualizado:

    rsync --version
    

    Saída de amostra:

    $ 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. Pesquise nas páginas de manual por "progress2". Agora você terá acesso à --info=progress2opção:

    man rsync
    

    ... pressione a /tecla e digite progress2; pressione Enter para procurá-lo; pressione npara a correspondência 'n' seguinte até encontrar a entrada que você está procurando:

    Há também uma --info=progress2opção que gera estatísticas com base em toda a transferência, em vez de arquivos individuais. Use este sinalizador sem emitir um nome de arquivo (por exemplo, evitar -vou especificar --info=name0) se desejar ver como está a transferência sem rolar a tela com muitos nomes. (Você não precisa especificar a --progressopção para usar --info=progress2.)

Consulte também: "Como usar o rsync", de Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Referências Parciais:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Gabriel Staples
fonte