dd
또는 다른 응용 프로그램은 아마도 여러분이 생각하고있는 의미에서 "일종의 내장 검증"기능을 가지고 있지 않습니다. 기록 된 내용과 비교하기 위해 저장 매체의 데이터를 다시 읽지 않습니다. 이것이 운영 체제의 일입니다.
실제로 응용 프로그램에서 하드웨어로 읽기 확인을 수행하는 것은 불가능합니다. 일부 시나리오에서는 작동하지만 대부분의 경우 아무것도 달성하지 못합니다. 응용 프로그램은 저장 매체에 직접 쓰는 경우 방금 쓴 내용을 읽을 수는 있지만 일반적으로 메모리 내 캐시에서 읽으 므로 유용한 보증을 제공하지 않습니다. 에서 당신이 인용 예를 들어 , dd
파이프에 쓰고, 그 경우는 선 아래로 추가 데이터 처리에 제어하지 않습니다. rsync 예제에서 두 번째 패스는rsync --checksum
이론적으로는 오류를 잡을 수 있지만 실제로는 오류가 발생하면 두 번째 단계에서 잘못된 점이보고되지 않으므로 실제로 유용한 보증을 제공하지 않는 작업에 노력을 낭비하고 있습니다.
그러나 응용 프로그램 은 운영 체제가 데이터에 대한 책임을 수락했는지 확인한다는 의미에서 데이터에 어떤 일이 발생하는지 확인합니다. 모든 시스템 호출은 오류 상태를 반환합니다. 시스템 호출이 오류 상태를 리턴하면 응용 프로그램은 일반적으로 오류 메시지를 표시하고 0이 아닌 종료 상태를 리턴하여 해당 오류를 사용자에게 전파해야합니다.
그주의 dd
예외입니다 : 명령 줄 매개 변수에 따라 dd
약간의 오차가 무시할 수 있습니다 . 이것은 매우 드문 일입니다. dd
이 속성의 유일한 공통 명령입니다. 사용 cat
대신에 dd
, 당신이 위험에 손상을하지 않는 그런 식으로하고 그것을 잘 빠를 수 있습니다 .
일련의 데이터 복사에서 두 가지 종류의 오류가 발생할 수 있습니다.
- 손상 : 전송 중에 비트가 뒤집 힙니다. 응용 프로그램 수준에서이를 확인할 수있는 방법은 없습니다. 그럴 경우 다시 읽을 때 동일한 손상을 일으킬 가능성이 높은 프로그래밍 버그 또는 하드웨어 오류 때문입니다. 이러한 손상이 발생하지 않았 음을 확인하는 유일한 유용한 방법은 미디어에 물리적으로 연결을 끊고 RAM에 문제가있는 경우 다른 컴퓨터에서 다시 시도하는 것입니다.
- 잘림 : 복사 된 모든 데이터가 올바르게 복사되었지만 일부 데이터가 전혀 복사되지 않았습니다. 이것은 하나 입니다 가치가 명령의 복잡성에 따라, 때로는 검사합니다. 데이터를 읽을 필요가 없습니다. 크기 만 확인하면됩니다.