A parte relevante do seu pendrive leva exatamente 4331520
setores de 512
bytes (numerados de 0
a 4331519
), então o comando deve ser:
dd if=/dev/your_usb_key of=/path/to/image.dd bs=512 count=4331520
Editar (para endereçar o comentário):
and why 4331520 if it's 4331519? +1 just because reasons?
Se os setores fossem numerados de 1
e o último fosse o 4331519
th, então haveria um total de 4331519
deles. Mas como eu disse, eles são numerados de 0
, é por isso que count=4331520
.
I feel uneasy with this kind of calculations, isn't there an automatic way to do it?
Francamente eu não sei. Eu tenho a tendência de pensar que se você precisa fazer tais truques, então você deve entender melhor o que você está fazendo. E se você entender, então você pode fazer as contas e você sabe as armadilhas, e você se sente desconfortável sem seus próprios cálculos.
something like DD but strip the empty/non-partitioned space?
Você não quer remover todo o espaço não particionado. Há MBR com tabela de partições no setor 0
. Seus setores 1..8191
podem conter código de bootloader.
Se houvesse GPT, haveria uma tabela de partições de backup no final do disco e também estaria no espaço não particionado.
Além disso, se suas partições tivessem espaço entre elas, sua ferramenta dd
-like simplesmente não poderia ignorá-la, pois deslocaria efetivamente a última partição para o início da imagem e a tabela de partições (na imagem) tem que ser ajustado. Outra estratégia neste caso seria substituir este espaço de partição média por zeros enquanto escreve a imagem de saída como um arquivo esparso.
Mais uma armadilha: leia esta questão e minha resposta lá, então pense em como a ferramenta precisa ser sofisticada para ter sucesso tira o espaço não particionado dessa bagunça.
Em geral, você sempre pode criar imagens separadas do MBR (ou MBR + bootloader) e de cada partição. No seu caso, seria algo assim:
dd if=/dev/your_usb_key of=/path/to/image_MBR_bootloader.dd bs=512 count=8192
dd if=/dev/your_usb_key1 of=/path/to/partition1.dd
dd if=/dev/your_usb_key2 of=/path/to/partition2.dd
Se você deseja remover o espaço vazio (ou seja, o espaço mostrado por df
), use uma ferramenta que entenda o sistema de arquivos e trabalhe em nível de arquivos, não em setores de disco. Tenho certeza de que dd
(ou algo como dd
) não é a ferramenta certa para esse tipo de trabalho.
how can I be so sure this would work without dumping it into a real drive for checking?
Aprenda, então um dia você poderá dizer "Eu sei o que estou fazendo". Ensaios e erros são partes do processo de aprendizagem. Eu suponho que despejar a imagem em um drive real para checar seria um bom teste.