Você pode, mas deve preparar seu disco primeiro. O truque é usar arquivos ou compactações esparsas. Esse método é demorado, gera alta E / S. No seu caso (2GB em uso em 1 TB HDD) uma cópia de arquivo (como sugerido no comentário da serragem) provavelmente será uma solução muito melhor. Se - por outro lado - você teve, por exemplo 850 GB em uso de 1 TB, muitos arquivos pequenos nele, você queria fazer backup de MBR, tabela de partição, metadados, tudo isso de uma só vez - então meu método seria uma maneira razoável de salvar pelo menos 150 GB no arquivo de imagem (que ainda não cabia em HDD de 500 GB, a menos que os dados sejam bem compactados).
Estou escrevendo isso para usuários com maior uso de disco. Observe também que a unidade de origem deve estar íntegra e permitir a substituição do espaço vazio. Eu estou dando a solução principalmente para backup, não recuperação nem forense. O tempo e o custo de E / S serão pagos não apenas durante a criação da imagem, mas também quando (se) a imagem for gravada no disco. Pense duas vezes se o método for adequado para você.
Digamos que você precise clonar /dev/sdb
e várias partições: /dev/sdb1
, /dev/sdb2
…
Preparação
Para tirar vantagem de arquivos esparsos ou compactação, você deve sobrescrever o espaço vazio com zeros:
## Most commands need sudo.
mount -o rw /dev/sdb1 /mnt
dd if=/dev/zero of=/mnt/zero_file bs=32M
## Long wait here. Expect "no space left on device".
sync
rm /mnt/zero_file
umount /dev/sdb1
## Repeat this with /dev/sdb2, /dev/sdb3 etc.
No caso de partição do Windows, pode haver algum problema devido à hibernação do Windows. Leia este .
Se houver grandes lacunas no layout da partição, você também deve preenchê-las com zeros. As partições de swap (se houver) precisam de tratamento especial para tornar a imagem resultante o menor possível. Os arquivos do Windows como hiberfil.sys
, pagefile.sys
e swapfile.sys
podem ser removidos antes de zero_file
creation. Não vou abordar esses casos em detalhes aqui.
Método de arquivo esparso
Este método pode ser usado se o sistema de arquivos de destino (onde o arquivo de imagem será salvo) suportar arquivos esparsos. Para gerar um arquivo de imagem esparsa, invoque:
## dd probably needs sudo here.
dd if=/dev/sdb of=/foo/bar/my_image.dd bs=512 conv=sparse
(EDIT: originalmente havia bs=32M
mas não é a boa escolha com conv=sparse
. Compare esta questão .)
Para escrever a imagem de volta:
## dd probably needs sudo here.
dd if=/foo/bar/my_image.dd of=/dev/sdb bs=32M
Vantagens:
- A imagem pode ser montada (
mount -o offset=…
ou usekpartx
) para acessar os arquivos.
Desvantagens:
- O sistema de arquivos de destino deve suportar arquivos esparsos.
- Lembre-se de mantê-lo esparso ao copiar (
cp --sparse=always
).
Método de arquivo compactado
Para gerar a imagem:
## dd probably needs sudo here.
dd if=/dev/sdb bs=32M | gzip -c > /foo/bar/my_image.dd.gz
Para escrever a imagem de volta:
## dd probably needs sudo here.
gzip -cd < /foo/bar/my_image.dd.gz | dd of=/dev/sdb bs=32M
Esses comandos podem ser criados sem dd
, com gzip
apenas. Eu usei dd
para garantir 32 buffer MiB.
Vantagens:
- O arquivo resultante é não esparso, não precisa de tratamento especial.
- O tamanho da imagem será reduzido ainda mais se os arquivos do disco de origem estiverem sujeitos à compactação.
Desvantagens:
- É difícil acessar os arquivos dentro da imagem compactada sem descompactação completa (alguns FUSE podem ser úteis, embora eu não tenha certeza, nunca tentei; considere um abordagem do squashfs ).
Dicas
Para monitorar o progresso, invoque dd
com status=progress
operando. Se dd
já estiver sendo executado sem ele (por exemplo, seu dd
não suporta status=progress
ou você esqueceu de usá-lo), envie o sinal USR1
para a ferramenta:
kill -s USR1 $(pidof dd)
e repita conforme necessário.
Como alternativa, você pode usar pv
para ler. Exemplos:
pv -B 32m /dev/sdb | dd of=/foo/bar/my_image.dd bs=512 conv=sparse
pv -B 32m /dev/sdb | gzip -c > /foo/bar/my_image.dd.gz
Para compactar o uso rápido gzip --fast
, para compactar o melhor uso gzip --best
. Consulte man gzip
para mais opções.
Use pigz
em vez de gzip
, se puder. Isso deve acelerar as coisas, porque pigz
pode utilizar mais de um núcleo de processador. Você pode usar outro compressor se quiser.