Skip to content

md5sum #
Find similar titles

Structured data

Category
Programming

리눅스 기본명령어 - md5sum #

지정된 파일을 md5(Message-Digest algorithm 5)라는 해시 알고리즘으로 체크섬(check sum) 값을 계산하는 명령어이다. 간단히 말하자면 입력된 파일을 30자 정도의 문자열로 축약한 값을 출력해 준다. 이론적으로 중간에 한 군데라도 데이터가 변경되면 체크섬 값은 달라진다(체크섬이 같아도 파일 내용이 다른 경우가 있지만 드물다). 대용량의 파일을 전송하다 보면 네트워크 장애 등의 원인으로 파일에 손상이 발생할 수 있다. 이때 내가 전송받은 파일이 중간에 손실 없이 잘 다운로드 되었는지 확인하고자 할 때 내가 받은 파일의 md5 체크섬을 계산하여, 원본파일의 체크섬과 비교해서 동일성을 검증할 수 있다.

예를 들어 NCBI의 ftp(ftp://ftp.ncbi.nlm.nih.gov/blast/db/)에서는 각 파일마다 몇 백메가에서 몇기가 정도의 formatdb 파일을 제공하는데, 각 파일마다 끝에 .md5라는 확장자를 붙여 원본파일의 md5sum 값을 함께 제공한다. 이 .md5 파일을 원본 파일과 함께 받은 후 아래와 같이 원본파일의 md5sum 값과 다운받은 파일의 md5sum을 계산하여 비교해 볼 수 있다.

다운로드 받은 파일의 md5sum 체크 #

> md5sum *.tar.gz
852496b3a8d323462cd9558521ddde62 *nt.00.tar.gz
f8f2576608a1f1453fd1c59a71b3913f *nt.01.tar.gz
d17dfda0ff54ae585e99e37056d92b30 *nt.02.tar.gz
99f968ad050194c3a666444143e7554f *nt.03.tar.gz
6f273aadf090a88815cd5327b06d498c *nt.04.tar.gz
ab345e33430141da811c931f3f2b0e03 *nt.05.tar.gz

md5sum 명령어 다음에 위와 같이 '.tar.gz' 라고 입력하면 현재 명령어를 실행한 디렉토리에서 '.tar.gz'으로 끝나는 모든 파일의 md5 체크섬을 계산하여 화면에 출력한다.

다운로드 받은 원본파일의 md5 체크섬 값 출력 #

아래와 같이 cat 명령어로 간단하게 '.md5' 로 끝나는 파일들의 내용을 출력 할 수 있다.

> cat *.md5
852496b3a8d323462cd9558521ddde62  nt.00.tar.gz
f8f2576608a1f1453fd1c59a71b3913f  nt.01.tar.gz
d17dfda0ff54ae585e99e37056d92b30  nt.02.tar.gz
99f968ad050194c3a666444143e7554f  nt.03.tar.gz
6f273aadf090a88815cd5327b06d498c  nt.04.tar.gz
ab345e33430141da811c931f3f2b0e03  nt.05.tar.gz

두 값의 비교 #

먼저, 위의 출력된 내용을 엑셀로 옮긴다. 그리고 엑셀 함수로 두 셀을 비교하는 함수, 예를들어 다운로드 받은 파일의 md5sum 체크 값이 A열의 1행 부터 있고, 다운로드 받은 원본파일의 md5 체크섬 값이 B열의 1행 부터 있다고 가정해 보자. C열의 1행에 '=A1=B1'이라고 수식을 입력하면 두 값이 동일할 경우 True, 틀릴 경우 False와 같은 결과가 나타나 쉽게 비교할 수 있다. 물론 다운로드 받은 파일의 md5sum 체크값에는 파일명에 * 문자가 있으므로 엑셀의 찾아 바꾸기 기능으로 * 문자를 삭제한 다음 비교해야 한다.

0.0.1_20210630_7_v33