다음 명령을 사용하여 만든 백업을 확인하려고 합니다.
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진수 보기를 제공하여 차이점을 강조합니다. 복제된 파티션의 경우 더 짧은 소스 파일의 끝에 있어야 하는 Enter
can 을 사용하십시오 . Move to the next difference between the files
따라서 진행률 표시기가 없더라도 데이터 손상을 감지하며 비교가 트리거된 후 화면이 업데이트되는 데 몇 시간이 걸릴 수 있습니다.