wget은 작동하지만 특정 REST URL에 대해 컬이 실패하는 이유는 무엇입니까?

wget은 작동하지만 특정 REST URL에 대해 컬이 실패하는 이유는 무엇입니까?

대답으로하나의 질문다른 웹사이트에서 이 URL에서 데이터를 가져오려고 하면 curl다음과 같은 이상한 차이점이 나타납니다.wgethttps://www.uniprot.org/uniprot/A2Z669.fasta

어떤 이유로 파일을 올바르게 가져오는 curl동안 자동으로 다운로드에 실패합니다 .wgetA2Z669.fasta

$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:22 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..

$ curl https://www.uniprot.org/uniprot/A2Z669.fasta
$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:22 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..

출력 파일을 명시적으로 설정하는 것은 도움이 되지 않습니다. 단지 빈 파일을 생성하기만 하면 됩니다.

$ curl -o file "https://www.uniprot.org/uniprot/A2Z669.fasta"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

$ ls -la
total 300
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:25 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..
-rw-r--r--   1 terdon terdon      0 Dec 11 12:25 file
$ cat file
$ 

그러나 wget잘 작동합니다.

$ wget https://www.uniprot.org/uniprot/A2Z669.fasta
--2023-12-11 12:24:42--  https://www.uniprot.org/uniprot/A2Z669.fasta
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving www.uniprot.org (www.uniprot.org)... 193.62.193.81
Connecting to www.uniprot.org (www.uniprot.org)|193.62.193.81|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://rest.uniprot.org/uniprot/A2Z669.fasta [following]
--2023-12-11 12:24:42--  https://rest.uniprot.org/uniprot/A2Z669.fasta
Resolving rest.uniprot.org (rest.uniprot.org)... 193.62.193.81
Connecting to rest.uniprot.org (rest.uniprot.org)|193.62.193.81|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://rest.uniprot.org/uniprotkb/A2Z669.fasta [following]
--2023-12-11 12:24:43--  https://rest.uniprot.org/uniprotkb/A2Z669.fasta
Reusing existing connection to rest.uniprot.org:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘A2Z669.fasta’

A2Z669.fasta            [ <=>               ]     314  --.-KB/s    in 0s      

2023-12-11 12:24:43 (6.65 MB/s) - ‘A2Z669.fasta’ saved [314]

$ ls -la
total 304
drwxr-xr-x   2 terdon terdon 266240 Dec 11 12:24 .
drwxr-xr-x 202 terdon terdon  32768 Dec 10 17:31 ..
-rw-r--r--   1 terdon terdon    314 Dec 11 12:24 A2Z669.fasta

특정 파일에만 국한된 것 같지 않습니다. 동일한 REST API에서 다른 URL을 시도했습니다(https://www.uniprot.org/uniprot/P05067.fasta) 같은 행동을 보였습니다.

저는 Arch 시스템에서 실행하고 있습니다.

$ wget --version | head -n1
GNU Wget 1.21.4 built on linux-gnu.

$ curl --version | head -n1
curl 8.4.0 (x86_64-pc-linux-gnu) libcurl/8.4.0 OpenSSL/3.1.4 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.58.0

여기서 무슨 일이 일어나고 있는 걸까요? wget실패하면 어떻게 작동합니까 curl?

답변1

wget리디렉션은 기본적으로 따르지만 curl따르지는 않습니다. 다음을 추가하면 잘 작동합니다 -L.curl

curl -OL https://www.uniprot.org/uniprot/A2Z669.fasta

( 기본 동작 과 일치하도록 표준 출력 대신 파일에 출력을 -O지시합니다 .)curlwget

관련 정보