dd 백업의 무결성을 확인하는 방법은 무엇입니까?


11

난 그냥 이상 전체 하드 드라이브 (50기가바이트)의 백업을 만들어 ssh를 통해 :

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

이제 파일의 무결성을 확인하는 가장 좋은 방법은 무엇입니까 image.img, 즉 모든 것이 올바르게 복사되었는지 확인하는 방법은 무엇입니까?


보통 dd 때 항상 완벽합니다. 그러나 항상 sha1sum을 실행하여 원본 및 백업의 sha1 해시를 확인할 수 있습니다.
darnir

2
" 보통 ... 항상 완벽합니다." 그것은 Naked Gun의 인용문을 상기시켜줍니다.
Sparhawk

답변:


10

명령이 성공적으로 종료되면 하드웨어 결함을 제외하고 백업이 올바른 것입니다 (이는 수행 할 수있는 모든 검증에 동일하게 영향을 줄 수 있음). 하드웨어에 결함이 있으면 나중에 잘못 될 수 있지만 대부분의 스토리지 하드웨어는 손상을 감지합니다.

여기에는 한 가지주의 사항이 있습니다. 파이프 라인에서 셸은 왼쪽의 오류를보고하지 않습니다. (이것은 오른쪽이 모든 데이터를 읽을 필요가없는 상당히 일반적인 시나리오 때문입니다. 예를 들어 some_command | head, 출력이 더 이상 필요하지 않기 때문에 왼쪽이 죽습니다.) 여기서 읽기 오류 dd는 무시하십시오. bash pipefail에서 파이프 라인의 모든 부분에서 오류를보고 하도록 옵션을 설정하십시오 .

또한, 그주의 dd bs=…몇 가지 오류를 무시 하고 dd종종 느린 대안보다 . 전혀 사용하지 않는 것이 좋습니다 dd. 전체 파일을 복사하는 것만으로는 이점이 없습니다. 당신이 어딘가에 읽은 것과는 달리, dd특별한 속성을 가진 저수준 디스크 액세스 명령이 아니며 dd, 마법은 없습니다 /dev/hda.

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

그럼에도 불구하고 백업을 확인하려는 경우 가장 좋은 방법은 양쪽에서 암호화 체크섬을 만들어 비교하는 것입니다. 예를 들면 다음과 같습니다.

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

두 개의 체크섬이 동일한 지 확인하십시오.

검사 할 때 백업과 원본이 동일한 지 테스트합니다. 변경 /dev/hda하지 않아도 파일 시스템 마운트 및 마운트 해제를 포함하여 변경하면 (많은 파일 시스템에서 마지막 마운트 날짜가 업데이트 됨) 체크섬이 변경됩니다. 나중에 무결성을 확인하려면 백업 시점의 디스크 체크섬을 기록해 두십시오.


3
경우에 참고하는 것이 무엇 에이 /dev/hda백업이 만들어진 이후 변경된 해시가 일치하지 않습니다.
bahamat

해시 검사의 장점은가 음성 (이미지 기록시 오류가 해시 실행 중에 실수로 반복되어 결함이 눈에 띄지 않게 됨)이 천문학적으로 작다는 것입니다. 하드웨어 오류가 있으면 압도적으로 해시 검사에 실패해야합니다. 언급 된 바와 같이 디스크가 변경되면 오 탐지 검사를받습니다.
Steven Lu

@StevenLu 아니요, 하드웨어 결함이 균일하지 않기 때문에 상관 관계가 매우 높습니다. 특히 RAM 오류 (일반 PC에서 관찰 할 수있는 가장 일반적인 하드웨어 오류)는 특정 비트에서 발생합니다.
Gilles 'SO- 악마 그만

아마도, 아마도 ... 큰 소금 알갱이로 이런 해시를 만들었을 것입니다. 그러나 OP는 네트워크를 통해 전송하고있었습니다. TCP에도 불구하고 본질적으로 신뢰할 수 없습니다. 또한 실제 메모리에서 동일한 액세스 패턴을 볼 수 없을 가능성이 큽니다.
Steven Lu

@Gilles 첫 문장에 대한 설명을 찾는 새로운 관련 질문 .
Sparhawk

5

darnir & Giles가 언급했듯이, 가장 좋은 방법은 소스 디스크에서 어떤 것이 변경되기 전에 백업 직후 암호화 해시를 실행하는 것입니다. 그러나 이후 디스크를 사용한 경우 해시가 일치하지 않을 가능성이 높습니다. 디스크에서 1 바이트를 변경하더라도 완전히 다른 해시가 발생합니다.

이상적이지는 않지만 이미지를 장착하여 이미지를 확인할 수 있습니다. 디스크 이미지가있는 시스템에서 다음을 실행하십시오 ( /mnt/disk존재하지 않거나 다른 위치에있는 경우 작성 하십시오).

mount -o loop image.img /mnt/disk

그런 다음 주변을 탐색하고 /mnt/disk모든 파일 을 볼 수 있습니다 . 이미지 내부의 중요 파일의 sha1 해시를 원본과 비교하여 무결성을 확인하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.