웹서버에 호스팅된 파일 헤더의 MD5를 확인하세요.

웹서버에 호스팅된 파일 헤더의 MD5를 확인하세요.

cURL을 사용하여 주기적으로 설정 파일을 다운로드하는 bash 스크립트를 작성 중입니다. 문제는 다음과 같습니다. 파일 크기는 약 110MB이고 항상 동일한 파일 이름을 갖습니다.

파일을 다운로드하고 해시(md5, sha1)를 확인한 후 이전에 다운로드한 파일과 비교할 수 있습니다.

  • 해시가 동일하면 파일은 동일하며 업데이트되지 않은 것입니다. 이 경우 아무 이유 없이 다운로드한 것입니다.
  • 해시가 다르면 웹서버에 있는 파일은 새 버전입니다. 이 경우에는 이 파일을 사용하고 새 버전으로 업데이트합니다.

나는 이 스크립트를 30분마다 실행하고 싶습니다. 그리고 110MB를 무료(동일한 파일 버전)로 다운로드하는 것이 귀찮습니다.명령줄에서 컬을 사용하여 처음 500KB를 다운로드하는 방법이 있습니까?

현재 해결 방법은 HTTP 헤더의 파일 크기를 비교하는 것이지만 여전히 위의 질문에 대한 답변을 얻고 이것이 가능한지 알고 싶습니다. 많은 감사를 드립니다.

컬 -sI 'http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H '호스트: domain.tld' -H '사용자 에이전트: Mozilla/5.0(Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' -H '수락: text/html,application/xhtml+xml ,응용 프로그램/xml;q=0.9,/;q=0.8' -H '수락 언어: en-US,en;q=0.5' -H '수락 인코딩: gzip, deflate, br' -H 'DNT: 1' -H '연결: 연결 유지 ' | grep '콘텐츠 길이:'

답변1

클라이언트와 서버 모두에서 파일 수정 날짜를 신뢰할 수 있습니까? 그렇다면 curl-z옵션과 함께 HTTP의 "조건부 GET"/"If-Modified-Since" 기능을 사용할 수 있습니다. 아무것도 다운로드할 필요가 전혀 없습니다. 이는 처음부터 모든 곳에서 많이 사용되어 온 HTTP 프로토콜에 내장된 기능입니다.

서버에 있는 파일의 수정 날짜가 지난번 다운로드한 파일의 날짜보다 최신이 아닌 경우 아무것도 다운로드할 필요가 없습니다.

bash스크립트 의 경우 를 사용하여 stat(1)로컬 파일의 수정 시간을 찾는 것을 고려하면 해당 정보를 curl -z ….

관련 정보