Existe um utilitário (ou alguma mágica do shell) que me permita comparar dois dispositivos de bloco?
Detalhes: Eu tenho um dispositivo RAID grande (0,5 TB) do qual fiz backup em um dispositivo SATA um pouco maior usando o dd. O dispositivo possui várias partições, mas eu copio do dispositivo 'pai' e não dos nós do dispositivo particionado (por exemplo, copio / dev / hda e não / dev / hda1, por exemplo).
Gostaria de verificar se o backup está bom / correto.
Eu pensei em executar o md5sum em cada dispositivo, no entanto, isso não me dará um resultado preciso, pois o segundo dispositivo é um pouco maior que o primeiro e, portanto, os bytes extras alteram o hash.
fonte
info cmp
: "O comando 'cmp' compara dois arquivos e, se forem diferentes, informa o primeiro byte e o número da linha em que são diferentes."--bytes=LIMIT
opção, configurando oLIMIT
valor para o tamanho de bytes do dispositivo menor para parar no final da unidade menor (ou do limite da partição) semcmp
sair com status diferente de zero.Dependendo de quão cheias as unidades estejam, pode ser mais rápido montar os sistemas de arquivos e
Caso contrário, eu diria algo assim:
Obviamente, descubra quão grande você precisa aumentar
bs
ecount
parar no final da unidade menor (ou logo antes, se for muito mais conveniente).Ou, graças ao comentário do enzotib, parece que você poderia usar
cmp
, mas você precisará do-n
sinalizador para limitar o número de bytes à menor das duas unidades.fonte
diff
subshells não lerão o dispositivo inteiro antes de escrevê-lo.dd
gravabs
bytes imediatamente após a leitura (ou processamento, se especificado, não aqui) e grava emfifo
s, que bloqueiam até serem lidos.Você está procurando software diff binário
O rdiff
foi projetado para transmissão de backup e rede, veja rdiff-backup e duplicidade para propuse de backup
xdelta3
é um diff binário de código aberto, ferramentas de compactação diferencial, compactação delta VCDIFF (RFC 3284).
bsdiff
é demais !! memória com fome, não é adequado para dispositivos de bloco.
fonte
Existe um utilitário chamado bsdiff , que faz exatamente esse tipo de coisa. Ele é muito rápido e pode gerar um patch binário, se você precisar.
Veja este post para obter algumas explicações.
fonte
bsdiff
O trabalho de é mais complexo do que simplesmente comparar dois arquivos, por isso duvido que possa ser mais rápido que o mais simplescmp
.Você pode comparar dois dispositivos de bloco de tamanhos diferentes usando o
md5sum
seguinte:(supondo que o dispositivo menor seja
/dev/sda
)fonte
Considere executar
fsck
no backup. Pode ser necessário executar alguns truqueslosetup
para definir dispositivos de loopback em partições incorporadas no backup, mas se a verificação do arquivo indicar que a estrutura do arquivo é consistente, é provável que os dados sejam bons.Se você deseja uma soma de verificação completa, pode usar dispositivos de loopback com deslocamentos para examinar as 'partições internas' do backup e do md5sum cada uma separadamente, mas um forçado
fsck
pode fornecer uma idéia básica muito mais rápido que byte para compara byte ou cálculos de soma de verificação.fonte