O 'dd' em um dispositivo pula alguma coisa?

1

Eu queria obter um backup de disco do sistema com um CD ao vivo do Ubuntu. Eu usei o seguinte comando:

dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c > /media/external/image.gz

Isso pareceu funcionar. Para validar que eu apaguei o conteúdo de sda, então carreguei de volta da imagem:

dd if=/dev/zero of=/dev/sda bs=1M
gunzip -c /media/external/image.gz | dd of=/dev/sda conv=sync,noerror bs=64K

No entanto, o resultado não foi mais inicializável.

Os resultados de fdisk -l são iguais antes de fazer o backup e depois de tentar restaurá-lo:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util
fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       14594   117220823+  ee  GPT
/dev/sda2   *           1           1           0    0  Empty
Partition 2 does not end on cylinder boundary.

Também não consigo montar o disco. Os tipos de arquivos que tentei não funcionaram (o disco original é um Mac OS X inicializável). Eu tentei o hfs, hfsplus, hpfs.

O disco não aparece (nem mesmo como desmontado) no explorador de arquivos do Ubuntu. Estava aparecendo antes de zerar e a tentativa de restauração.

Minha principal questão é: o que há de errado na minha seqüência de backup / limpeza / restauração? Não deve copiar e restaurar todo o conteúdo do disco, incluindo boot e outros itens? E isso independentemente do formato? O zeramento pode ser o coração do problema? O que eu senti falta?

EDIT: eu vi isso mas isso não me ajudou.

O disco externo é NTFS.

    
por Gauthier 17.10.2011 / 21:23

1 resposta

2

Acho que as opções sync e noerror para conv podem causar problemas. Se houver algum problema com as leituras, o noerror continuará a copiar dados potencialmente duvidosos. sync declara que preencherá nulos para cada bloco, dependendo do tamanho do bloco de entrada.

dd sem essas opções deve fazer um byte para cópia de bytes e erro se houver problemas.

Atualizar

Definição de sincronização:

When the conv=sync flag is specified, the dd command pads any partial input blocks with nulls. Thus, the dd command inserts nulls into the middle of the data stream if any of the reads do not receive a full block of data (as specified by the ibs flag). This is a common occurrence when reading from pipes.

    
por 18.10.2011 / 00:41