방금 다음을 통해 전체 하드 드라이브(50GB)를 백업했습니다 ssh
.
dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
지금 파일 무결성을 확인하는 가장 좋은 방법은 무엇입니까 image.img
? 즉, 모든 것이 올바르게 복사되었는지 확인하는 방법은 무엇입니까?
답변1
명령이 성공적으로 종료되면 하드웨어 오류(수행할 수 있는 모든 확인에 다시 영향을 미침)가 없는 한 백업이 올바른 것입니다. 하드웨어에 오류가 발생하면 나중에 올바르지 않게 될 수 있지만 대부분의 스토리지 하드웨어는 손상을 감지합니다.
여기에는 주의 사항이 있습니다. 파이프라인에서 셸은 왼쪽에서 오류를 보고하지 않습니다. (이것은 오른쪽이 모든 데이터를 읽을 필요가 없는 매우 일반적인 상황 때문입니다. 예를 들어 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
체크섬을 변경합니다. 변경을 하지 않더라도(많은 파일 시스템에서 마지막으로 마운트된 날짜가 업데이트됨) 체크섬이 변경됩니다. 나중에 무결성을 확인하고 싶다면 백업 당시 디스크의 체크섬을 어딘가에 적어두세요.
답변2
darnir와 Giles가 언급했듯이 가장 좋은 방법은 소스 디스크를 변경하기 전에 백업 직후 암호화 해시를 실행하는 것입니다. 그러나 그 이후로 디스크를 사용한 경우 해시가 일치하지 않을 가능성이 높습니다. 디스크에서 1바이트만 변경해도 해시 값이 완전히 달라질 수 있습니다.
이상적이지는 않지만 설치를 통해 이미지를 부분적으로 확인할 수 있습니다. 디스크 이미지가 있는 시스템에서 다음 명령을 실행합니다( /mnt/disk
없는 경우 대체 위치를 생성하거나 사용).
mount -o loop image.img /mnt/disk
/mnt/disk
그런 다음 모든 파일을 찾아보고 볼 수 있습니다 . 이미지 내 중요 파일의 sha1 해시를 원본 파일과 비교하여 무결성을 확인하세요.
답변3
qemu-img 명령을 사용하십시오.
qemu-img check image.img