글쎄요, 변경되었는지 확인하기 위해 주기적으로 해시해야 하는 다소 큰 파일(~200MB)이 있습니다.
문제는 이 파일에 변경될 수 있으므로 무시해야 하는 두 개의 작은 필드가 있다는 것입니다. 이러한 각 필드에는 알려지고 고정된 오프셋과 크기가 있습니다.
나는 세 개의 cmp 명령을 사용하여 이 작업을 수행했지만 정기적으로 수행해야 하기 때문에 가능한 가장 효율적인 방법으로 수행하고 싶습니다. 또한, 파일의 백업본을 저장해야 하는 것도 문제가 되며, 비교를 위해 그냥 해시값만 저장해 두는 것이 더 나을 것입니다.
지금까지 내가 얻은 가장 가까운 것은 다음과 같습니다.
dd는 파일 시작 부분부터 md5까지의 오프셋을 읽습니다.
dd는 첫 번째 필드의 끝부터 두 번째 필드의 시작 부분까지 읽습니다. |
dd는 두 번째 필드 끝부터 md5 파일 끝까지 읽습니다.
단일 해시 값을 얻을 수 있도록 세 가지 dd 명령의 출력을 하나의 md5sum 인스턴스로 리디렉션하는 방법이 있습니까? 임시 파일에 세 개의 dd 명령을 작성한 다음 해시하면 많은 I/O가 생성되므로 원하지 않습니다. 나는 이 일을 가능한 한 효율적으로 하고 싶다.
어떤 조언이라도 대단히 감사하겠습니다! !
답변1
정말로 데이터를 해시하려면 서브셸을 사용하세요.
( dd_1 ; dd_2 ; dd_3 ) | md5sum
그렇지 않으면 Hojat의 답변을 사용하는 것이 좋습니다. 조각별로 해시하고 이러한 "하위 해시"로 작업을 수행하세요.
답변2
세 개의 md5 합계를 파일에 추가한 다음 해당 파일에 또 다른 md5를 생성할 수 있습니다. 해당 해시 중 하나를 변경하면 최종 텍스트 파일 해시가 일치하지 않게 됩니다.
md5(1) 및 md5(2) 및 md5(3)을 최종 파일 --> md5(final_file)에 연결합니다.