Dividir arquivo binário no deslocamento rapidamente

0

O arquivo que preciso dividir é de 32 GB.

Eu preciso dividir o arquivo em duas partes em um deslocamento que especifico e só preciso manter a segunda parte.

Eu posso fazer isso facilmente:

dd if=binary_file.bin of=second_part.bin bs=1 skip=143254

No entanto, isso está levando um tempo muito longo (horas) para ser concluído e eu preciso de um método de linha de comando que complete o processo muito mais rápido.

Alguma sugestão?

Estou usando o OS X 10.11.6 (El Capitan).

    
por ericg 25.08.2016 / 16:14

1 resposta

0

Talvez leia alguns bytes até um limite de 4k e, em seguida, um segundo comando para acrescentar o resto?

Supondo que queremos terminar em um limite de 4K (a maioria dos sistemas de arquivos parece usar buffers internos de 4K).

  1. Pule para a parte onde você deseja começar a ler. (bs = 1 salto = 143254)
  2. leia de 143254 até 143254 com bs = 1 e conte = 3990
  3. Leia o restante do arquivo com bs = 4k e anexe-o ao arquivo de saída. (Veja como anexar dados em um arquivo por dd aqui na SU)

Se isso for muito lento e você estiver criando scripts como uma tarefa repetitiva, você pode otimizar ainda mais fazendo leituras de 512b para os primeiros 3584 bytes (7 * 512), depois leituras de um único byte de 400-ish e o restante em tamanho 4k .

Observe que essa resposta parece uma solução alternativa. Eu vou gostar de ler as outras respostas que esta pergunta vai atrair. Talvez até mesmo uma solução limpa que apenas busque 143254 e então use opteration normal de leitura / gravação para copiar, permitindo usar padrões de sistema de arquivos ao invés de minhas suposições explícitas sobre buffers internos de 4k.

    
por 25.08.2016 / 16:42