/bin 및 하위 디렉터리의 모든 파일을 md5sum하고 bash 스크립트를 사용하여 해시를 확인하려면 어떻게 해야 합니까?

/bin 및 하위 디렉터리의 모든 파일을 md5sum하고 bash 스크립트를 사용하여 해시를 확인하려면 어떻게 해야 합니까?

나는 전에 시도했다

find /bin -type -f -exec md5sum {} + >>sum.md5 

디렉터리 /bin에는 여러 파일 형식이 포함되어 있지만 위의 내용은 일반 파일에 대한 체크섬만 반환합니다. 알아낼 수 있는 방법이 있나요?모든 파일및 아래에서 /bin실행 md5sum 하고 체크섬을 확인하시겠습니까?

내가 달성하고 싶은 것에 대한 세부 사항은 다음과 같습니다. 우리는 /bin해당 하위 디렉터리와 모든 파일을 md5sum로 백업 old.md5하고 압축하여 클라우드에 업로드합니다. 예를 들어 시스템이 충돌한 후 /bin클라우드에서 디렉터리를 다운로드하고 복원한 다음 md5sum 명령을 다시 실행하여 new.md5모든 파일의 해시가 포함된 파일을 생성했습니다. 이제 new.md5파일을 old.md5파일과 비교하여 다운로드 또는 업로드 프로세스 중에 파일에 변경된 사항이 없는지 확인하고 싶습니다 . 이 스크립트는 해시 값을 확인해야 합니다.

완전한 스크립트가 필요합니다.

답변1

디렉터리가 아닌 모든 파일 찾기를 사용하려면 find디렉터리를 지우는 테스트를 사용하세요.

find -H /bin ! -type d -exec md5sum {} + >sum.md5

이는 md5sum유틸리티 디렉토리 제공을 피하면서 심볼릭 링크를 포함하여 가능한 한 많은 파일에 대해 일괄 실행됩니다(경고 표시).

-H옵션을 사용 find하면 명령줄에 제공된 모든 심볼릭 링크, 즉 /bin심볼릭 링크인 경우 이를 확인합니다.

계산된 체크섬을 확인하려면 를 사용하십시오 md5sum -c sum.md5.

답변2

명령은 이미 하위 디렉터리에 있지만(링크가 아닌 경우 아래 참조) 일반 파일만 반환하도록 /bin명시적으로 지시했기 때문에 링크 및 기타 비정규 파일을 건너뜁니다 . find그게 -type f내 뜻이야. 에서 man find:

   -type c
          File is of type c:

          f      regular file

모든 것을 찾으려면 다음을 삭제하세요 -type.

find /bin/ -exec md5sum {} + >>sum.md5

참고: 심볼릭 링크를 수행하는 경우 /마지막에 :가 /bin/있습니다(일반적으로 최신 Linux 시스템에서와 마찬가지로 /bin). /usr/bin이것이 없으면 명령은 기호 링크 자체( /bin)만 반환하고 하위 디렉터리로 드롭다운하지 않습니다.

나중에 이러한 체크섬을 확인하려면 다음을 실행하세요.

md5sum -c sum.md5 

관련 정보