다운로드 한 파일이 완전한지 또는 손상되었는지 확인할 수있는 명령 줄 방법이 있습니까? 작성 중이며 파일을 작업하기 전에 파일이

파일을 다운로드하고 조작하는 스크립트를 작성 중이며 파일을 작업하기 전에 파일이 불완전하지 않은지 확인하고 싶습니다 (예 : 연결 끊김으로 인해).



답변

다운로드 한 파일의 무결성을 확인하는 가장 일반적인 방법은 MD5 체크섬을 사용하는 것입니다. 이것은 다운로드 한 사이트가 실제로 게시 된 MD5 체크섬 파일의 파일이라고 가정합니다. 다운로드 한 파일의 고유 한 체크섬을 만들어 게시 된 체크섬과 비교하여 MD5 체크섬을 확인할 수 있습니다. 파일이 동일하면 다운로드 한 파일이 완료되었으며 변경되지 않은 것입니다.

다운로드하는 파일이 변경 될 것으로 예상하지 않으면 체크섬을 미리 계산하여이를 스크립트에 하드 코딩 할 수 있지만 파일이 업데이트되면 확인에 실패합니다.

파일 실행의 MD5 체크섬을 만들려면 md5sum myFile. wget의 경우, 특히 다운로드중인 파일이 큰 경우이 명령이 유용 할 수 있습니다.

wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM.

다운로드하는 동안 “myFile”체크섬을 생성하여 파일 MD5SUM에 저장하면 시간을 절약 할 수 있습니다.

연결이 끊어진 경우 wget의 종료 코드를 확인하는 것이 가장 좋은 방법이라고 생각합니다. 오류없이 다운로드에 성공하면 wget이 반환 0됩니다. 다른 것은 무언가 잘못되었음을 나타냅니다. 의 “종료 상태”섹션을보십시오 man wget.


답변

파일을 다운로드하는 데 사용 된 명령의 리턴 코드는 명령이 성공적으로 실행되었는지 여부를 알려줍니다. 일반적으로 리턴 코드 0은 성공을 나타내고 0이 아닌 숫자는 오류를 나타냅니다. $?변수를 통해 리턴 코드에 액세스 할 수 있습니다 .

사용하는 기본 예 wget는 다음과 같습니다.

#!/bin/bash

wget foo.tgz &> /dev/null

if [[ "$?" != 0 ]]; then
    echo "Error downloading file"
else
    echo "Success"
fi

&> /dev/null모든 wget의 출력을 리디렉션 /dev/null하여 스크립팅에 이상적이지만 디버깅 wget오류를보다 어렵게 만듭니다.


답변