De um arquivo esparso para um dispositivo de bloco

3

Eu tenho um arquivo esparso de imagem do sistema cujo tamanho real é de apenas alguns MBs, mas o "tamanho aparente" é de cerca de 1GB. Eu estou tentando escrevê-lo para um dispositivo de bloco de forma eficiente (sem os buracos). Aqui estão algumas soluções que eu tentei:

  • dd if=sparse_file of=/dev/some_dev processa o arquivo inteiro incluindo os furos, então, no final, estou obtendo algo como 1007869952 bytes (1,0 GB) copied, 22,0301 s, 45,7 MB/s
  • cp --sparse=always sparse_file /dev/some_dev parece que também não está funcionando, pois leva muito tempo para alguns MBs (~ 13s)
  • ddrescue --sparse --force sparse_file /dev/some_dev falha com uma mensagem ddrescue: Only regular files can be sparse. (Nota: funciona na direção oposta conforme aqui ).

Existem 2 outras formas cobertas aqui mas gostaria de usar apenas as ferramentas padrão que fazem parte da distribuição Linux.

Então existe uma maneira de escrever o arquivo esparso para uma imagem de bloco ignorando os buracos?

    
por Artak Begnazaryan 26.11.2014 / 17:27

1 resposta

1

Esta ferramenta escrita em C pode ser útil para você. Não é uma ferramenta padrão, mas é muito simples e fácil de compilar.

Você está certo de que cp não suporta saída esparsa para bloquear dispositivos (confirmado na man page).

    
por 07.04.2015 / 10:56