일반적으로 파일 확장자로 끝나는 URL을 가진 파일을 다운로드합니다.
Ubuntu ISO를 다운로드하려면 간단합니다.
wget http://releases.ubuntu.com/14.04.3/ubuntu-14.04.3-desktop-amd64.iso
그러나 ASP.Net/IIS를 사용하는 것으로 의심되는 사이트를 발견했습니다.
ISO에 대한 링크는 다음 형식입니다.(... 정책에 따라 링크 내용을 삭제했습니다.):
http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
MD5와 만료 시간이 매개변수로 있으므로 이것을 다운로드하는 방법을 잘 모르겠습니다. 따라서 wget은 이 ISO가 아닌 웹 페이지만 다운로드합니다.
어떤 제안이 있으십니까?
답변1
사용
wget "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899"
설명: URL에 "&" 문자가 있습니다. Linux 및 유사한 시스템에서는 이를 백그라운드 프로세스로 만듭니다.
해결 방법은 URL을 큰따옴표( )로 묶어 "
하나의 인수로 처리하는 것입니다.
답변2
복잡한 URL에서 합리적인 파일 이름을 얻으려는 경우 다음을 사용할 수 있습니다.출력 문서옵션.
-O file
--output-document=file
다음 양식 중 하나가 작동합니다.
앞에서 언급한 것처럼 URL의 특수 문자가 명령 구문 분석기에 의해 해석되지 않는지 확인하십시오.
답변3
다음을 사용하여 이 작업을 수행할 수 있는 두 가지 방법이 있습니다.곱슬 곱슬하다.
이 첫 번째 방법에서는 -O
URL의 원격 이름을 기반으로 파일을 작성하도록 플래그를 지정합니다. 이 경우 파일을 시스템에 IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
; URL 값이 큰따옴표로 어떻게 포함되어 있는지 확인하세요. Bash 명령으로 잘못 해석될 수 있습니다 &
.?
curl -O -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899";
이 방법은 기술적으로는 "작동"하지만 파일 이름은 기껏해야 혼란스럽습니다. 따라서 이 다른 방법에서는 >
URL 뒤에 파일 이름이 오는 출력 리디렉션을 사용하여 파일 내용을 다음 이름의 파일로 출력합니다 IMAGENAME.ISO
.
curl -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899" > "IMAGENAME.ISO";
따라서 저에게 묻는다면 두 번째 방법이 대부분의 일반적인 사용에 가장 적합합니다. 또한 -L
두 명령 모두에서 사용되는 플래그를 확인하세요. 이 명령은 Curl에게 파일 다운로드 URL이 가질 수 있는 리디렉션 링크를 따르도록 지시합니다. 왜냐하면 다운로드 서비스의 파일은 대상 페이로드 파일에 도달하기 전에 여러 번 리디렉션되기 때문입니다.