wget을 사용하여 특정 이름의 파일을 얻는 방법은 무엇입니까?

wget을 사용하여 특정 이름의 파일을 얻는 방법은 무엇입니까?

저는 Amazon Linux에서 bash를 사용하고 있습니다.

내 브라우저에서 다음 URL을 방문하면,https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US, firefox-56.0.1.tar.bz2 파일을 얻습니다. 그런데 wget을 사용하면 다운로드한 파일은 동일한 파일처럼 보이지만 제목에 "index.html"이 포함되어 있습니다. 그래서 나는 노력했다

wget -r --no-parent --reject "index.html*" -nH --cut-dirs=7 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

하지만 지금은 파일이 다운로드되지 않습니다. wget(또는 다른 명령줄 도구)을 사용하여 파일을 다운로드하고 브라우저에서 URL을 방문할 때와 동일한 제목을 갖도록 하려면 어떻게 해야 합니까?

답변1

이 경우 헤더에 전송된 서버 이름을 신뢰하려고 하며 해당 지시문이 없으면 wgetURL의 파일 이름이 사용됩니다...

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" --trust-server-names

물론, 이것이 작동하려면 모든 서버가 전송/생성되는 모든 파일의 파일 이름을 보내야 합니다. 일부 스크립트는 이 작업을 수행하지 않습니다. 그런 경우에도 실제로는 파일인 "index.html"을 얻게 됩니다.

-O이 경우 출력 옵션을 사용하고 마지막에 원하는 파일 이름을 지정하기 만 하면 됩니다.

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" -O latest-firefox.tar.bz2

물론 이 부분이 작동하려면 파일 형식 등을 알아야 합니다.

답변2

당신은 설치할 수 있습니다클라이언트플러그인 firefox. 링크를 누르면 curl아래에 명령이 생성 됩니다 Download with cURL. 이 경우 다음과 같습니다.

curl --header 'Host: ftp.mozilla.org' --header 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: en,de;q=0.5' --header 'Cookie: optimizelyEndUserId=oeu1495381484085r0.16482844406273445; optimizelySegments=%7B%22245984388%22%3A%22false%22%2C%22246002457%22%3A%22search%22%2C%22246073289%22%3A%22none%22%2C%22246073290%22%3A%22ff%22%7D; optimizelyBuckets=%7B%7D' --header 'DNT: 1' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://ftp.mozilla.org/pub/firefox/releases/56.0.1/linux-x86_64/en-US/firefox-56.0.1.tar.bz2' -o 'firefox-56.0.1.tar.bz2' -L

답변3

간단하게curl도구:

curl -Os "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US/firefox-56.0.1.tar.bz2" 

-O,--remote-name
우리가 얻은 원격 파일과 유사한 이름을 가진 로컬 파일에 출력을 씁니다. (원격파일의 파일부분만 사용하며, 경로는 잘립니다.)

관련 정보