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