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.