md5sum 확인(파일 없음)

md5sum 확인(파일 없음)

그래서 수십 개의 파일을 확인하기 위해 쉘 스크립트를 사용해 보았습니다. 파일 검사는 서로 다른 시간에 발생합니다.

이를 수행할 수 있는 방법이 있습니까?

md5sum -c 24f4ce42e0bc39ddf7b7e879a File.name

더 나은 sha512sum

sha512sum -c 24f4ce42e0bc39ddf7b7e879a File.name

이제 이렇게 해야 합니다.

md5sum -c file.md5sums File.name

아니면 모든 md5sum을 하나의 파일에 넣고 다음과 같이 확인할 수도 있습니다.

md5sum -c `sed 1p file.md5sums` File.name
md5sum -c `sed 2p file.md5sums` File.name
md5sum -c `sed 3p file.md5sums` File.name
md5sum -c `sed 4p file.md5sums` File.name

단 하나의 항목으로 수십 개의 파일을 갖는 것은 어리석은 것 같습니다.

답변1

여러 파일에 대해 sha256sum을 수행하고 출력을 텍스트 파일에 쓴 다음 sha256sum을 실행할 수 있었는데 sha256sum -c sumfile제게는 효과가 있는 것 같았습니다.

$ sha256sum $(find /etc/ -maxdepth 1 -type f) > test.txt
$ sha256sum -c test.txt
...
/etc/statetab: OK
/etc/sysctl.conf: OK
/etc/system-release: OK
/etc/system-release-cpe: OK
/etc/termcap: OK
/etc/updatedb.conf: OK
/etc/vconsole.conf: OK
/etc/vimrc: OK
/etc/virc: OK
/etc/yum.conf: OK
...
$ sha256sum --version
sha256sum (GNU coreutils) 8.22

답변2

GNU coreutils 컬렉션의 다른 모든 유사한 유틸리티와 마찬가지로 이 md5sum유틸리티는 체크섬 파일을 얻고 파일 시스템의 해당 파일과 비교하여 확인할 수 있습니다.

다음과 같은 체크섬 파일을 생성했다고 가정해 보겠습니다.

$ md5sum /etc/* >sums
$ cat sums
e55afe6e88abb09f0bee39549f1dfbbd  /etc/afpovertcp.cfg
279f7ab7d2609163e5034738b169238b  /etc/aliases
5c1ba75b6d9d8cf921ec83e2a54c9bb5  /etc/asl.conf
[...]
d41d8cd98f00b204e9800998ecf8427e  /etc/xtab
32d37eb59a7c3735635db329adad86d7  /etc/zprofile
4efb8dbeb8f46ca3879666b313a2607f  /etc/zshrc

그런 다음 다음과 같이 모든 체크섬을 한 번에 확인할 수 있습니다.

$ md5sum -c sums
/etc/afpovertcp.cfg: OK
/etc/aliases: OK
/etc/asl.conf: OK
[...]
/etc/xtab: OK
/etc/zprofile: OK
/etc/zshrc: OK

내가 당신을 오해했는데 당신이 확인하고 싶다면특정한파일에 몇 개의 파일을 추가 sums한 다음 다음을 수행합니다.

$ fgrep "/etc/xtab" sums | md5sum -c -

답변3

스크립트에서 이 작업을 수행하면 다음과 같은 간단한 비교 검사를 수행할 수 있습니다.

if [ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]
then
  echo Pass
else
  echo Fail
fi

추가 공백과 -md5sum의 출력과 일치해야 하는 필요성에 유의하세요.

더 깨끗해 보이면 한 줄로 만들 수 있습니다

[[ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]] && echo Pass || echo Fail

답변4

단일 파일의 경우 bash에서 이 작업을 수행하여 문자열을 파일로 전달할 수 있습니다.

md5sum -c <(echo "24f4ce42e0bc39ddf7b7e879a File.name") File.name

관련 정보