Compare dois arquivos, enquanto sobrescreve o tamanho do segundo arquivo

2

Estou tentando verificar um backup que fiz usando o seguinte comando:

dd if=/dev/sda of=/dev/sdc2

Eu fiz o backup do conteúdo de /dev/sda (disco rígido interno) para /dev/sdc2 (unidade de backup externa, conectada via USB), no entanto /dev/sdc2 (a partição em que /dev/sda está sendo copiado) é um pouco maior que / dev / sda.

Não é possível tornar /dev/sdc2 o tamanho de /dev/sda porque o tamanho em bytes de /dev/sda não são divisíveis por 4096, que é o tamanho do setor na unidade /dev/sdc .

Eu quero saber se diff (o comando Unix) vai deixar você assumir o tamanho de /dev/sdc2 para ser o tamanho de /dev/sda (compare apenas o primeiro x bytes, (x sendo o tamanho de /dev/sda ) de /dev/sdc2 )

O motivo pelo qual quero verificar isso é porque, quando eu estava correndo dd (e, em seguida, diff /dev/sda /dev/sdc2 ), recebi erros no sistema log.

Eu corri o diff /dev/sda /dev/sdc2 e ele disse que os dispositivos são diferentes, provavelmente porque /dev/sdc2 é maior que /dev/sda .

Os erros (que se repetem de vez em quando, com números variados) ficou assim:

ata5.00: exception Emask 0x50 SAct 0x0 SErr 0x280900 action 0x6 frozen
ata5.00: irq_stat 0x08000000, interface fatal error
ata5: SError: { UnrecovData HostInt 10B8B BadCRC }
ata5.00: failed command: READ DMA
ata5.00: cmd c8/00:00:e0:57:f9/00:00:00:00:00/e9 tag 4 dma 131072 in
         res 50/00:00:df:57:f9/00:00:09:00:00/e9 Emask 0x50 (ATA bus error)
ata5.00: status: { DRDY }
ata5: softreset failed (device not ready)

O computador em que estou fazendo está executando a versão ISO (instalador) do Arch Linux e não está conectado à Internet no momento (será mais tarde). Devo tentar uma distribuição Linux diferente?

    
por FelixIsDev 07.12.2015 / 22:49

2 respostas

2

Talvez cmp seja adequado neste caso:

SYNOPSIS
       cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]

DESCRIPTION
       Compare two files byte by byte. (...)

       -n, --bytes=LIMIT
              compare at most LIMIT bytes

Você desejará passar, como um argumento para cmp -n , o tamanho em bytes do dispositivo de origem, que blockdev --getsize64 pode calcular:

cmp --bytes=$(blockdev --getsize64 /dev/sda) /dev/sda /dev/sdc2

Note, no entanto, que as mensagens de erro que você colou parecem indicar erros reais de leitura, por isso é provável que você esteja enfrentando problema com seus dados, não apenas um relacionado a como diff opera.

    
por 07.12.2015 / 23:08
0

Um pouco atrasado, mas vbindiff pode ajudar aqui. Ele fornece uma visualização hexadecimal de tela dividida de ambos os arquivos, destacando quaisquer diferenças. Com Enter , você pode Move to the next difference between the files , que, no caso de uma partição clonada, deve estar no final do arquivo de origem mais curto. Portanto, ele encontrará qualquer corrupção de dados, embora não tenha um indicador de progresso e possa levar horas para atualizar a tela depois de gerar uma comparação.

Screenshots: link

    
por 21.02.2017 / 18:45

Tags