Primeiro, quero responder à sua pergunta:
what about the situation where i have two partitions that together
fill up only 10% of 160G disk. what is the image size going to be for
the good ol "dd if=/dev/sda of=disk.img" run: 16G or 160G?
Se você executar dd em / dev / sda, ou seja, o disco inteiro sda de 160G, então disk.img será 160G, já que o dd copiará todos os bits em sda um por um. Não faz diferença se o espaço depois de / dev / sda1 e / dev / sda2 for particionado ou não! Infelizmente, se o disco rígido já estava cheio de dados antes, mesmo se você tentar compactar o disk.img, ele não ficará realmente menor devido ao fato de que o "espaço vazio" na superfície do disco na realidade não está vazio, mas contém os bits restantes dos sistemas de arquivos e dados usados anteriormente. Eu não sei o que o caso de novos discos rígidos que nunca foram usados antes é, no entanto!
Além disso, quero responder ao seu comentário que você deu à resposta da RedGrittyBrick.
Se o seu objetivo for criar uma imagem de disco inteiro de tamanho mínimo, uma solução possível é a seguinte
-
Crie uma terceira partição com o espaço vazio, no seu exemplo: / dev / sda3. Não há necessidade (mas também nenhum dano) de formatá-lo com um sistema de arquivos, pois a partição será sobrescrita com zeros na próxima etapa, eliminando qualquer formatação do sistema de arquivos novamente
-
Agora preencha toda a partição com zeros: dd if=/dev/zero of=/dev/sda3
. Isso levará bastante tempo e o dd não tem barra de progresso, então seja paciente. Em algum momento, o dd informará que o disco está cheio e, algum tempo depois, sairá com um relatório final sobre os bits copiados
-
Se você não quiser que esta partição exista, poderá excluí-la novamente agora. Os zeros permanecerão na superfície do disco!
-
Agora crie a única imagem de disco à medida que você planeja em primeiro lugar: dd if=/dev/sda of=disk.img
. A propósito: Não há nenhuma necessidade de qualquer parâmetro dd adicional, como conv=notrunc
, etc. como relatado em muitos outros fóruns. O notrunc tem absolutamente nada a ver com o que queremos fazer aqui (clonar um disco para um arquivo) e é usado para algo totalmente diferente (resumindo: Inserir dados em um arquivo que já existe sem cortar off [= truncando] os restos do arquivo existente, caso os dados recém-adicionados sejam menores que o arquivo existente). Não dê ouvidos àqueles que escrevem que o notrunc é especialmente necessário ao clonar discos em um arquivo, ou seja, 100% de bollocks
-
O disk.img terá 160 GB novamente, não é surpresa aqui. Mas a diferença agora para antes é que se você comprimir o disk.img, desta vez ele vai quase ter o mesmo tamanho que a soma das imagens compactadas de / dev / sda1 e / dev / sda2, já que os zeros no a superfície de disco não particionada restante comprimirá praticamente nada!
-
Lá você vai, agora você tem uma imagem de disco inteiro de um único arquivo de todo o disco, mas que é quase apenas o tamanho da área de dados realmente usada de / dev / sda1 e / dev / sda2
-
No caso em que você não teria criado / dev / sda1 e / dev / sda2 ainda, você poderia apenas escrever zeros com dd em todo o disco / dev / sda primeiro, ou usar uma ferramenta de limpeza de disco que escreve zeros em um disco inteiro, etc. e depois apenas cria / dev / sda1 e / dev / sda2. O resultado deve ser o mesmo
HTH!
Cumprimentos
Um anônimo nativo da internet no planeta Terra