전체 URL 없이 파일을 다운로드하는 방법은 무엇입니까?

전체 URL 없이 파일을 다운로드하는 방법은 무엇입니까?

다운로드할 파일의 전체 URL이 없지만 특정 URL에 액세스할 때만 전체 URL을 브라우저에 전달하는 Linux 셸(wget, 컬이 있음)을 통해 파일을 다운로드하는 방법이 궁금합니다. 그러나 Linux 셸(wget 또는 컬 사용)을 통해 다운로드하려고 하면 HTML 파일만 얻을 수 있습니다.

예를 들어, 여기에서 몇 MB의 대용량 파일을 다운로드하고 싶습니다.

http://www.ebi.ac.uk/ena/data/view/U00096.3&display=fasta&download=fasta&filename=entry.fasta

따라서 이것을 브라우저에 붙여넣으면 다른 HTML 파일 대신 "entry.fasta" 파일을 저장할 수 있는 "다른 이름으로 저장" 대화 상자가 표시됩니다. 나는 제안대로 컬 -O -L -J를 시도했다.이 문제, 그러나 또한 성공하지 못했습니다.

답변1

제공하신 URL은 정상적으로 다운로드됩니다. 예:

wget "URL"
curl -O "URL"

의견에서 언급했듯이: 인용문. 항상 인용됩니다!

이와 같은 문자는 &셸에서 특별한 의미를 가지며, 이러한 문자가 없으면 URL은 원하는 방식으로 해석되지 않습니다.


에 관해서는파일명을 모르고 다운로드– 아직도 무슨 말씀이신지 잘 모르겠습니다만, 몇 가지 참고 사항을 말씀드리겠습니다.

이것은특정 장소forebi.ac.uk

이것URL특별한 형태로 제공됩니다통일 자원 식별자. 아마도 쿼리 부분, 특히 첫 번째 부분에 관심이 있을 것입니다 U00096.3.

다른 파일 및 범위를 나타내도록 변경할 수 있습니다. 예를 들어 다운로드는 다음과 U00000같습니다 U00096.

curl -O "http://www.ebi.ac.uk/ena/data/view/U00000-U00096&display=fasta&download=fasta&filename=U00000-U00096.fasta"
                                            ^^^^ data ^^^

파일 이름 부분은 파일 이름을 지정하는 방법에 대한 제안일 뿐입니다. 원하는 대로 변경할 수 있습니다. 예: filename=myown.fasta– 변경되지 않습니다.무엇다운로드 서버만 -> 웹 브라우저에서 제안하는 이름이며, 컬 등에서도 사용됩니다.


사이트에는 탐색해야 할 검색 및 목록 가능성이 너무 많습니다.

무슨 일이 일어나고 있는지 자세히 알아보기

다운로드 링크를 클릭하거나 컬이나 wget과 같은 도구를 사용하면 특정 파일에 대한 요청이 ebi.ac.uk 서버로 전송됩니다. 귀하의 예에서는 참조가 다음과 같이 설정되어 있을 수 있습니다.

http://www.ebi.ac.uk/ena/data/view/U00096.3

GET 쿼리는 다음을 보고합니다.

query['display'] = fasta
query['download'] = fasta
query['filename'] = entry.fasta

서버는 다음과 같이 응답합니다.

Content-Disposition: attachment; filename=entry.fasta

이는 서버가 클라이언트에 파일 이름 제안을 반환하는 방법입니다. 옵션과 함께 컬 버전을 사용하는 경우 -J이 옵션을 사용하여 파일을 다음 이름으로 저장할 수 있습니다.

curl -OJ "URL"

상술 한 바와 같이

이는 완전히 사이트별로 다르며 서버에서 URL이 해석되는 방식은 사이트 설정 방식과 관련이 있습니다.

다른 호스트의 쿼리 부분과 함께 다른 설정을 사용하면 filename=foo.txt서버에서 명명된 실제 파일을 얻을 수도 있습니다.foo.txt

이 웹사이트 ebi.ac.uk의 경우 파일은 파일이 아니라 데이터베이스 쿼리를 사용하여 동적으로 생성된 콘텐츠입니다. 쿼리 결과는 파일로 통합되어 최종 사용자에게 제공됩니다.

답변2

따옴표가 없으면 쉘은 &이를 "&까지 줄의 모든 것을 백그라운드에서 실행한 다음 나머지 줄을 계속 해석/실행"하는 것으로 보고 해석합니다. 인용된 경우 이는 &URL 문자열의 일부일 뿐입니다.

&URL에 3 s가 있으므로 따옴표가 없으면 4개의 명령이 실행됩니다. 처음 3개는 백그라운드 작업으로 실행됩니다.

wget http://www.ebi.ac.uk/ena/data/view/U00096.3 &
display=fasta &
download=fasta &
filename=entry.fasta

수정 사항은 URL을 인용하는 것입니다.

wget 'http://www.ebi.ac.uk/ena/data/view/U00096.3&display=fasta&download=fasta&filename=entry.fasta'

여기서는 작은따옴표로 충분하지만 URL에 변수 값을 포함하려면 큰따옴표를 사용해야 합니다.

답변3

어쩌면 당신은 할 수주의 깊은사용재귀 다운로드시설 wget. 그래서 당신이

wget -r http://gcc-melt.org/

gcc-melt.org사이트에서 "모든" 액세스 가능한 파일을 다운로드합니다.

(하지만 꼭 읽어보세요선적 서류 비치wget시도하기 전에)

추신. 나는 이 파일의 소유자이자 작성자입니다.http://gcc-melt.org/웹사이트이므로 과부하가 발생하지 않도록 하세요.

관련 정보