Estimativa do tempo ou trabalho que resta para terminar o rsync?

5

Ao executar rsync em um diretório com muitos arquivos e diretórios em vários níveis, podemos estimar a quantidade de trabalho ou tempo para concluir?

  • a opção de progresso mostra apenas o progresso da transferência de um único arquivo, não o progresso da transferência de todos os arquivos e diretórios no diretório de origem.

  • Uma maneira que eu acho é olhar para quais diretórios ela tem transferido até agora, e compare isso com a fonte.

    Isso ajudará muito se eu souber a ordem dos arquivos e diretórios em qual rsync os transfere.

    Acho que pode estar relacionado a que rsync executa vários tópicos e o que cada thread faz?

    Eu não tenho certeza de qual ordem ele escolheu, e meu palpite anterior de ordem de primeiro pedido parece não estar correto (assim eu o analiso).

por Tim 07.03.2015 / 16:01

2 respostas

3

Você pode fazer rsync imprimir uma linha por arquivo usando -i e, em seguida, usar pv -l para relatar o progresso com base na contagem de linhas (na contagem de arquivos em vigor).

Você precisará do pv (visualizador de canais): link

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Use o seguinte comando para obter a contagem de arquivos:

find sourcedir | wc -l

Nota: este comando mostrará informações de progresso com base no número de arquivos copiados. Isso funciona melhor se houver muitos arquivos pequenos. Se houver apenas alguns arquivos enormes, você não se divertirá muito.

Para ver o progresso quando você está atualizando (ou comparando) uma cópia existente:

(mais informações: Compare diretórios, mas não o conteúdo de arquivos )

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile

O segundo -i faz o rsync imprimir uma linha por arquivo, mesmo que sejam iguais.

Adicione -n para comparar (na verdade, não copie ou exclua nada).

Deixe de fora --delete conforme necessário.

Este comando imprimirá na tela, em tempo real, os arquivos que diferem:

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^\."

Os comandos acima funcionam melhor quando há muitos arquivos pequenos. Se você tiver poucos arquivos grandes, alguns dos relatórios de progresso integrados do rsync podem ser de maior ajuda. Veja a página man do rsync para -P ou --progress ou --info=progress2 . Mas cuidado: essas opções não funcionarão bem com pv . Ou pelo menos eu não descobri como.

Aqui está uma solução alternativa para ver o progresso com base no tamanho:

  • anote o espaço livre da partição de destino antes de copiar usando df -h .
  • anote o tamanho do diretório de origem usando du -sh .
  • use watch df -h e observe o tamanho aumentar.

Obviamente, isso só funciona ao copiar e não ao atualizar ou comparar.

    
por 11.12.2016 / 13:20
1

Você pode usar $ time rsync * / temp Quando você quer saber o tempo estimado.Você deve verificar o tamanho total dos arquivos antes de fazer o rsync. Rápido ou lento de rsync dependia de sua rede quando você fazia rsync através de rede. Você pode usar $ ls -ltr para verificar quais diretórios foram backup.

    
por 11.12.2016 / 14:02