두 번째 파일의 크기를 덮어쓰면서 두 파일을 비교합니다.

두 번째 파일의 크기를 덮어쓰면서 두 파일을 비교합니다.

다음 명령을 사용하여 만든 백업을 확인하려고 합니다.

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

/dev/sda/dev/sdc2(내부 하드 드라이브)의 내용을 (USB를 통해 연결된 외부 백업 드라이브) 에 백업했는데 , ( /dev/sdc2백업할 파티션)이 /dev/sda보다 약간 더 컸습니다./dev/sda

크기(바이트 단위)가 4096(드라이브의 섹터 크기)으로 나누어지지 않기 때문에 /dev/sdc2크기를 확인할 수 없습니다 ./dev/sda/dev/sda/dev/sdc

diff(Unix 명령)를 통해 (처음 x 바이트만 비교, (x는 ) 의 크기 ) /dev/sdc2의 크기를 가정할 수 있는지 궁금합니다./dev/sda/dev/sda/dev/sdc2

dd이것을 확인하고 싶은 이유는 (then ) 을 실행할 때 diff /dev/sda /dev/sdc2시스템 로그에 오류가 발생하기 때문입니다.

diff를 실행했는데 /dev/sda /dev/sdc2장치가 다르다고 합니다. 아마도 장치 /dev/sdc2/dev/sda.

오류(가끔 다양한 양으로 반복)는 다음과 같습니다.

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)

제가 이 작업을 수행하고 있는 컴퓨터는 Arch Linux의 ISO 버전(설치 프로그램)을 실행하고 있으며 현재 인터넷에 연결되어 있지 않습니다(나중에 연결될 예정임). 다른 Linux 배포판을 사용해 봐야 합니까?

답변1

아마도 cmp이 경우에는 충분할 것입니다:

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

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

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

계산할 수 있는 cmp -n매개변수로 소스 장치의 크기(바이트)를 전달 해야 합니다 .blockdev --getsize64

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

diff그러나 붙여넣은 오류 메시지는 실제 읽기 오류를 나타내는 것처럼 보이므로 데이터를 작동하는 방법과 관련된 문제 뿐만 아니라 데이터에 대한 실제 문제에 직면할 수도 있습니다 .

답변2

조금 늦었지만 vbindiff도움이 되었으면 합니다. 두 파일의 분할 화면 16진수 보기를 제공하여 차이점을 강조합니다. 복제된 파티션의 경우 더 짧은 소스 파일의 끝에 있어야 하는 Entercan 을 사용하십시오 . Move to the next difference between the files따라서 진행률 표시기가 없더라도 데이터 손상을 감지하며 비교가 트리거된 후 화면이 업데이트되는 데 몇 시간이 걸릴 수 있습니다.

스크린샷:https://www.google.com/search?q=vbindiff&tbm=isch

관련 정보