Rsync mostra o progresso para o arquivo individual

19

Estou usando o rsync para fazer upload / download de um arquivo muito grande (20Gb). Estou ciente da opção --progress, mas o que ela faz no meu caso é apenas me mostrar o resultado no final.

Meu problema é que, durante uma conexão instável, não sei se ainda está fazendo o download / upload ou se algo deu errado. Existe uma maneira de mostrar a barra de progresso para um arquivo individual? Algo semelhante ao que o wget faz por padrão?

Obrigado!

    
por Salmon 23.12.2012 / 22:39

4 respostas

16

Isso pode ser o que você está procurando.

% rsync -avvz --times --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    /usr/include/glib-2.0 my-glib-copy/

A divisão dos comutadores da seguinte forma:

  • -avvz = archive, x 2 detalhado, compress
  • - vezes = preserva os tempos de modificação
  • - estatísticas = fornece algumas estatísticas de transferência de arquivos
  • - soma de verificação = ignorar com base na soma de verificação, não na mod-time & tamanho
  • - legível por humanos = números de saída em um formato legível por humanos
  • - acls = preserva as ACLs (implica -p)
  • - itemize-changes = exibe um resumo de alterações para todas as atualizações
  • - progresso = mostra o progresso durante a transferência
  • - out-format = '[% t] [% i] (Última modificação:% M) (bytes:% -10l)% -100n'
    • % t = data e hora atual
    • % i = uma lista detalhada do que está sendo atualizado
    • % M = a hora da última modificação do arquivo
    • % - 10l = o comprimento do arquivo em bytes (-10 é para alinhamento e precisão)
    • % - 100n = o nome do arquivo (formato abreviado; trailing "/" no dir) (-100 é para alinhamento e precisão)

OBSERVAÇÃO: Veja as man pages de rsync e rsyncd.conf para detalhes completos sobre os switches acima.

O comando acima produz a seguinte transcrição:

sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096      ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511      ) glib-2.0/glib-object.h
       1.51K 100%    0.00kB/s    0:00:00
       1.51K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910      ) glib-2.0/glib.h
       2.91K 100%    2.78MB/s    0:00:00
       2.91K 100%    2.78MB/s    0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613      ) glib-2.0/gmodule.h
       3.61K 100%    3.45MB/s    0:00:00
       3.61K 100%    3.45MB/s    0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431      ) glib-2.0/gobject/gvaluecollector.h
       8.43K 100%  141.96kB/s    0:00:00
       8.43K 100%  141.96kB/s    0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507      ) glib-2.0/gobject/gvaluetypes.h
       8.51K 100%  143.23kB/s    0:00:00
       8.51K 100%  143.23kB/s    0:00:00 (xfer#179, to-check=0/183)
total: matches=0  hash_hits=0  false_alarms=0 data=1305506

rsync[2996] (sender) heap statistics:
  arena:         540672   (bytes from sbrk)
  ordblks:            3   (chunks not in use)
  smblks:             7
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        942080   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          592
  uordblks:      404784   (bytes used)
  fordblks:      135888   (bytes free)
  keepcost:      134240   (bytes in releasable chunk)

rsync[2999] (server receiver) heap statistics:
  arena:         286720   (bytes from sbrk)
  ordblks:            2   (chunks not in use)
  smblks:             8
  hblks:              3   (chunks from mmap)
  hblkhd:        667648   (bytes from mmap)
  allmem:        954368   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          672
  uordblks:      174480   (bytes used)
  fordblks:      112240   (bytes free)
  keepcost:      102352   (bytes in releasable chunk)

rsync[2998] (server generator) heap statistics:
  arena:         233472   (bytes from sbrk)
  ordblks:            4   (chunks not in use)
  smblks:             6
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        634880   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          448
  uordblks:       83152   (bytes used)
  fordblks:      150320   (bytes free)
  keepcost:      131120   (bytes in releasable chunk)

Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K

sent 350.39K bytes  received 3.43K bytes  707.64K bytes/sec
total size is 1.31M  speedup is 3.69

Barra de progresso nas versões mais recentes do rsync?

Me deparei com essa pergunta do SF:

Uma das respostas mencionou que nas versões mais recentes de rsync há agora suporte para uma barra de progresso. Parece assim:

% ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

Esta barra de progresso ainda não mostra o status de arquivos individuais na transferência, mas mostra uma porcentagem da transferência geral que pode ser útil.

    
por 24.12.2012 / 03:46
5

rsync -vP funciona para mim.

Na página de manual : "-P mesmo que --partial --progress"

    
por 22.09.2014 / 09:32
1

Você está usando o rsync no modo daemon? O comportamento padrão do rsync (no Debian 6) é como você solicitou. No entanto, estou achando na página man do rsyncd.conf que o comportamento padrão no modo daemon é:

transfer logging
This parameter enables per-file logging of downloads and uploads in a format somewhat similar to that used by ftp daemons. The daemon always logs the transfer at the end, so if a transfer is aborted, no mention will be made in the log file.
If you want to customize the log lines, see the "log format" parameter.

Portanto, se estiver usando rsync no modo daemon, parece que você terá que adicionar a linha "transfer logging" para rsyncd.conf.

    
por 24.12.2012 / 03:21
0

Acho que o Pipe Viewer é o que você precisa: link

    
por 27.09.2013 / 16:33