목록에서 파일을 다운로드하고 wget
중요하지 않은 오류가 발생하면(폭풍 중 불안정한 WIFI로 인해) 자동으로 재개하는 데 사용하는 쉘 스크립트가 있습니다.
문제는 파일에 쓴 다음 완료되면 .part 확장자를 제거하고 싶다는 것입니다 filename.part
(덮어쓰기 등은 이 시점에서 처리됩니다). 이는 와 같은 간단한 URL에는 잘 작동 http://myserver.org/myfile.doc
하지만 http://myserver.org/index.php?file_id=foo
. (내 방법은 index.php.part
원하는 결과 대신 쓰려고 시도합니다 )
wget이 자동으로 "최종" 파일 이름을 가져와서 작성하도록 할 수 있지만 다른 확장자로 저장할 수 있는 옵션은 제공되지 않으며 -O
제어할 수 없습니다.
그래서 제 질문은, 이름은 같지만 확장명이 추가된 파일을 작성할 수 있도록 다운로드 URL에서 "최종" 파일 이름을 얻는 표준 방법(또는 도구)이 있습니까?입니다. ( 예를 들어 -O
wget 또는 컬에 사용됨 )-o
wget $URL -O "$URL_GUESSED_FILENAME.part"
내 도구는 wget 또는 컬입니다. 현재 wget을 사용하고 있지만 선호하는 것이 없습니다. 또는 Python에서 이를 수행할 수 있는 방법이 있다면 그 방법도 열려 있을 것입니다.
답변1
http://myserver.org/index.php?file_id=foo
Wget은 서버에서 제공하는 파일 이름(예: )에 저장할 수 있습니다 foo.ext
. 일반적으로 이를 위해서는 wget 옵션이 필요합니다 --content-disposition
. 다운로드하려면 -O foo.ext.part
먼저 내용을 이해해야 합니다. 파일 이름이 포함된 http 헤더를 먼저 다운로드하면 됩니다.
wget을 사용하면 다음을 사용하여 해당 헤더 행을 가져올 수 있습니다.
wget --spider --server-response URL 2>&1 | grep -i content-disposition
파일 이름을 추출하려면 헤더에 대한 간단한 구문 분석을 수행해야 합니다. 물론 이것은 선택 사항입니다. 그것이 존재하지 않는다면 당신은 운이 없는 것이고 wget은 에 의존할 것입니다 index.php
. 그러면 당신도 그것을 사용할 수 있습니다 -O
.