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.