파일을 다운로드하고 조작하는 스크립트를 작성 중이며 파일을 작업하기 전에 파일이 불완전하지 않은지 확인하고 싶습니다 (예 : 연결 끊김으로 인해).
답변
다운로드 한 파일의 무결성을 확인하는 가장 일반적인 방법은 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
오류를보다 어렵게 만듭니다.