나는 전에 시도했다
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