디렉터리에 있는 파일의 해시를 사용하여 두 개의 다른 디렉터리를 비교하고 싶습니다.

디렉터리에 있는 파일의 해시를 사용하여 두 개의 다른 디렉터리를 비교하고 싶습니다.

각 디렉터리에 있는 모든 파일 간의 해시를 확인하여 두 디렉터리를 비교하고 sha256 해시를 사용하여 두 디렉터리가 서로 == 서로인지 확인합니다.

답변1

hash함수와 명령을 사용하여 두 디렉터리를 비교할 수 있습니다 . 예를 들면 다음과 같습니다.

cd dir1; sha256sum * >../hash_file
cd ../dir2; sha256sum -c ../hash_file >/dev/null 2>&1
EXITCODE=$?

종료 코드 0은 디렉터리의 파일이 동일함을 의미합니다. 하위 디렉터리가 있으면 제대로 작동하지 않을 수 있습니다.

답변2

디렉터리에 있는 각 파일의 내용을 단일 해시에 반복적으로 포함하려면 find모든 일반 파일을 찾아 catexec를 사용하여 연결하고 파이프한 후 sha256sum다음과 같이 파일에 저장할 수 있습니다.

find dir1 -type f -exec cat '{}' + | sha256sum > hash1
find dir2 -type f -exec cat '{}' + | sha256sum > hash2
diff -q hash1 hash2

관련 정보