Já procurei essa opção, mas só encontrei soluções que envolvem patches personalizados . O fato de que não aparece em --help e nenhuma informação adicional pode ser encontrada provavelmente indica que a resposta é 'não', mas eu gostaria de ver isso confirmado.
É possível mostrar o progresso total da transferência de arquivos com o rsync?
Agora existe uma maneira oficial de fazer isso no rsync (versão 3.1.0 do protocolo versão 31, testado com o Ubuntu Trusty 14.04).
Eu tentei com minha
/usr
pasta porque queria esse recurso para transferir sistemas de arquivos inteiros e/usr
parecia ser uma boa amostra representativa.O
--info=progress2
dá uma boa porcentagem geral, mesmo que seja apenas um valor parcial. Na verdade, minha/usr
pasta tem mais de 6 GB:e
rsync
levou muito tempo para digitalizar tudo. Então quase o tempo todo a porcentagem que eu vi estava cerca de 90% concluída, mas mesmo assim é reconfortante ver que algo está sendo copiado :)Referências:
O seguinte se aplica ao rsync versão 3.0.0 e superior. As opções descritas abaixo foram introduzidas nessa versão em 1º de março de 2008.
Junto com --info=progress2 você também pode usar a opção --no-inc-recursive (ou seu alias --no-ir mais curto ) para desabilitar a recursão incremental.
Isso criará toda a lista de arquivos no início, em vez de descobrir mais arquivos de forma incremental à medida que a transferência continua. Como conhecerá todos os arquivos antes de iniciar, fornecerá um relatório melhor do progresso geral. Isso se aplica ao número de arquivos - ele não relata nenhum progresso com base nos tamanhos dos arquivos.
Isso envolve uma troca. Construir toda a lista de arquivos com antecedência consome mais memória e pode atrasar significativamente o início da transferência real. Como seria de esperar, quanto mais arquivos houver, maior será o atraso e mais memória será necessária.
O seguinte é do manual do rsync (fonte - http://rsync.samba.org/ftp/rsync/rsync.html ):
Veja também https://rsync.samba.org para diferenças de versão específicas (role para baixo e confira os links de notícias de lançamento).
Você pode com 'pv' (
apt-get install pv
com Debian e Ubuntu). Recomendo monitorar o número de arquivos transferidos, pois a quantidade de dados transferidos não está correlacionada com o tamanho dos arquivos, mas sim no delta entre a origem e o destino. E a contagem de arquivos contará o mesmo progresso para um delta grande e outro com delta pequeno. O que significa que, em qualquer caso, a estimativa de ETA pode estar longe. O ETA baseado em tamanho só funciona se o seu destino estiver vazio, neste caso delta == tamanho da origem.A ideia geral é emitir uma linha por arquivo 'transferido' do rsync e contar essas linhas com 'pv':
Eu costumo fazer backup de sistemas de arquivos inteiros (por várias razões), neste caso você pode usar o muito mais barato
df
para obter o número de arquivos (em vez dedu
oufind
o que percorrerá sua hierarquia de origem outra vez após o rsync). A opção -x aparece para garantir que o rsync permaneça no mesmo sistema de arquivos de origem (e não segue outras montagens internas):Se você quiser contar arquivos em /source de maneira geral, use
find /source|wc -l
(aviso novamente: pode ser lento e pesado em E/S).Danakim está correto. Não há maneiras triviais de adicionar um indicador de progresso total.
A razão para isso é que quando o rsync examina uma lista de arquivos para sincronizar, ele não sabe com antecedência quais arquivos precisarão ser alterados. Se você estiver fazendo transferências delta, os próprios deltas devem ser calculados com antecedência para dar uma visão total do trabalho que precisa ser feito.
Em outras palavras, a maneira mais fácil de calcular quanto trabalho deve ser feito é realmente fazê-lo.
Para transferências longas, fico feliz em correr
du -s
dos dois lados. Mesmowatch -n1 du -s
, se eu me sinto muito ansioso.watch
executa um comando (du -s
aqui) periodicamente (a cada 1 segundo aqui) e mostra a saída em tela cheia.Basicamente não. Você só pode mostrar o progresso por arquivo com o sinalizador --progress , mas isso é tudo.
Eu estou supondo que você pode escrever um wrapper em torno dele ou usar qualquer um dos patches que você já encontrar, mas você deve se perguntar se realmente vale a pena, você realmente precisa de um progresso total para o rsync?
Também pesquisei como mostrar o progresso total com o rsync e encontrei uma resposta útil neste post: https://stackoverflow.com/questions/7157973/monitoring-rsync-progress
Basicamente, você pode usar --info=progress2 na versão dev do rsync 3.1.0 . Aqui está o que o doc disse:
Eu usei a resposta do zerodeux e escrevi meu próprio script bash:
Usar
Para ver quais arquivos o rsync está aberto no momento (mostrará o tamanho do arquivo), o rsync copia em um arquivo oculto localmente
Se você não tiver o rsync mais recente (por exemplo, o OS X tem 2.6.9) e não puder usar
--info=progress2
, aqui está outra alternativa para se salvar das páginas de rolagem de texto em andamento:rsync -aPh <source> <destination> | xargs -L1 printf "\33[2K\rTransferring: %s"
Isso imprimirá, em uma linha, o nome do último arquivo que está sendo transferido:
Transferring: the-latest.file