compara o tamanho do arquivo entre dois arquivos idênticos não esparsos ao copiar

1

Estou usando o KVM para migrar VMs de um host para outro. Eu já escrevi um web ui para fazer isso. Agora quero implementar uma barra de progresso.

Minha ideia é comparar o tamanho do arquivo do disco na origem e no destino durante a migração.

Server1:

ls -ls /data/file.raw
858963 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

Server2:

ls -ls /data/file.raw
698543 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

Agora, peguei o valor alocado e calculei em porcentagem.

100/858963 * 698543 = 81%

Bem. mas há um problema:

O disco não é escasso. O tamanho total do arquivo é 1717926 blocks . Na verdade, existem apenas 858963 blocks alocados. Então, a migração ao vivo ainda está copiando as partes vazias do arquivo enquanto minha barra de progresso já está em 100%

Eu já experimentei com du e stat .

Como obter apenas o tamanho do arquivo transferido do disco?

    
por Vince 15.12.2016 / 15:03

1 resposta

0

Use virsh migrate como já foi sugerido, ou aproveite o suporte a arquivos esparsos do rsync, em man rsync :

-S, --sparse Try to handle sparse files efficiently so they take up less space on the destination.

Experimente rsync -ahHS , adicione -P se quiser ver progresso e velocidade

    
por 22.12.2016 / 03:57

Tags