Bash 스크립트에서 HTTP를 통한 원격 파일의 수정 시간 가져 오기 중입니다. 예제 파일 :

HTTP를 통해 원격 파일의 파일 수정 시간 / 날짜를 추출하는 간단한 Bash 스크립트를 작성 중입니다.

예제 파일 : http://example.com/bar/example.pdf

실제 파일 다운로드 하지 않고도이 작업을 수행 할 수 있습니까 ? 그렇지 않은 경우 가장 좋은 대안은 무엇입니까?



답변

솔직히 말해서 직접적이 아닙니다.

파일에 대한 정보를 얻으려면 원격 사이트에서 데이터를 가져와야합니다. 일반적으로 이것은 HEAD요청 으로 수행 되지만 일부 (대부분의) 서버는 GET요청을 수행하는 것처럼 올바르게 구현하지 않고 전체 파일을 전달하지 않습니다 . curl설치 했다고 가정합니다 .

curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'

원하는 것을 줄 수 있지만 말했듯이 서버에 크게 의존합니다.


답변

서버 응답에는 일반적으로 Last-Modified필드가 있으므로 파일을 다운로드하지 않고도 확인할 수 있습니다. 를 사용할 필요가 없으며 -X HEAD, 특별한 옵션 -I이 있습니다 ( -s진행 출력 억제) :

curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified

또한, 내 경우에는 설치된 컬이 없다 (나는 임베디드 장치에 대한 스크립트를하고있어) 그냥 wget. wget의 방법은 다음과 같습니다.

wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified

--server-response인쇄 헤더 및 --spider옵션의 힘은 페이지를 다운로드 아니라 자신의 존재를 확인하지합니다.


답변