OpenSSL을 사용하여 파일 디렉토리에서 md5 또는 sha 해시를 생성 할 수 있습니까?


0

아카이브 된 두 디렉토리 사본 사이에 파일 / 디렉토리 무결성 표시기를 저장하는 데 관심이 있습니다. 하드 드라이브에 재귀 적으로 저장된 약 1TB의 데이터입니다. OpenSSL을 사용하여 두 데이터 사본 간의 비교로 사용되거나 나중에 데이터가 변경되지 않았는지 확인하는 데 사용할 수있는 모든 파일에 대해 단일 해시를 생성하는 방법이 있습니까?

답변:


3

모든 해시를 재귀 적으로 생성하고 해시를 단일 파일로 연결 한 다음 해당 파일의 해시를 생성 할 수 있습니다.


단일 명령의 경우 md5 -q <(find . -type f 2>/dev/null | xargs md5 -q | sort)Bash에서 잘 작동하며 임시 파일이 필요하지 않습니다. 시스템이 md5sum대신 사용 하는 경우 변경하십시오 md5. 또한 sort순서가 다른 경우 최종 체크섬에 영향을주는 플랫폼마다 다르게 작동 할 수 있습니다. ! -name ".DS_Store"Mac OS X의 .DS_Store 파일과 같이 특정 파일을 무시하도록 찾기 구성 요소에 플래그를 추가 하면 OS에서 생성 한 체크섬을 버릴 수 있습니다.
Justin Mrkva

2

단일 해시를 만들기 위해 누적 해시를 수행 할 수는 없지만 먼저 압축 한 다음 해시를 계산할 수 있습니다.

$tar -czpf archive1.tar.gz folder1/
$tar -czpf archive2.tar.gz folder2/
$openssl md5 archive1.tar.gz archive2.tar.gz

각 파일을 재귀 적으로 해시하려면 다음을 수행하십시오.

$find . -type f -exec openssl md5 {} +

1
1TB의 데이터-데이터를 압축 할 공간이 없습니다. 모든 파일의 해시를 재귀 적으로 생성하는 방법이 있습니까?
Kieveli

예, 내 답변에 추가했습니다.
John T

좋은 타르 아이디어이지만 항상 적용 가능한 것은 아닙니다. '찾기'방법이 일반적으로 더 좋습니다. tarball을위한 공간이없는 경우 : % tar -cf-folder | openssl md5
akira

2

tar는 아카이브의 일부로 메타 데이터를 저장하기 때문에 모든 메타 데이터 (생성 날짜 등)도 동일하지 않으면 tar에서 md5 합계를 사용하면 작동하지 않습니다.

아마도 모든 파일의 내용에 대해 md5 합계를 할 것입니다.

find folder1 -type f | sort | tr '\n' '\0' | xargs -0 cat | openssl md5
find folder2 -type f | sort | tr '\n' '\0' | xargs -0 cat | openssl md5

2

다이제스트를 coreutils 형식 (md5sum -b와 동일)으로 출력하는 데 관심이 있어야합니다.

따라서 md5sum 명령은 다음과 같습니다.

find . -path '*/.svn' -prune -o -type f -print0 | sort | tr '\n' '\0' | xargs -0 openssl dgst -md5 -r 

또는 파일로 출력

find . -path '*/.svn' -prune -o -type f -print0 | sort | tr '\n' '\0' | xargs -0 openssl dgst -md5 -r > ../mydigest.md5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.