compare o tamanho do arquivo entre dois arquivos idênticos e não esparsos durante a cópia

compare o tamanho do arquivo entre dois arquivos idênticos e não esparsos durante a cópia

Estou usando o KVM para migrar VMs ao vivo de um host para outro. Já escrevi uma interface web 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.

Servidor1:

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

Servidor2:

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%

Multar. Mas há um problema:

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

Eu já tentei com due stat.

Como obter apenas o tamanho do arquivo transferido do disco?

Responder1

Use virsh Migrate como já 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 -Pse quiser ver o progresso e a velocidade

informação relacionada