Como recuperar o tamanho do arquivo para download com o comando curl?

1

Eu tenho um requisito no script de shell como, tenho que baixar um arquivo de "url" com o comando curl. antes de baixar esse arquivo eu quero processar o mesmo tamanho de arquivo em um método.

Alguém pode me ajudar com isso?

    
por Santhosh 18.06.2018 / 11:43

1 resposta

4

Use a opção -I para recuperar apenas os cabeçalhos e procure pelo cabeçalho "Content-Length". Adicione a opção -L , se necessário, para seguir os redirecionamentos. Por exemplo:

$ curl -L -I https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
HTTP/1.1 302 Found
Date: Mon, 18 Jun 2018 09:51:32 GMT
Server: Apache/2.4.29 (Unix)
Location: https://gensho.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
Cache-Control: max-age=300
Expires: Mon, 18 Jun 2018 09:56:32 GMT
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Mon, 18 Jun 2018 09:51:32 GMT
Server: Apache/2.4.29 (Unix)
Last-Modified: Sat, 10 Mar 2018 11:56:52 GMT
Accept-Ranges: bytes
Content-Length: 305135616
Age: 228
Content-Type: application/x-iso9660-image

Isso mostra que o arquivo tem 305.135.616 bytes de tamanho.

Você pode filtrar isso usando o Gawk, por exemplo:

$ curl -s -L -I https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso | gawk -v IGNORECASE=1 '/^Content-Length/ { print $2 }'
305135616

(A opção -s informa curl para não imprimir informações de progresso, o que faz por padrão quando sua saída é redirecionada.)

Tenha em atenção que esta informação nem sempre está disponível, pelo que o seu script deve estar preparado para lidar com isso.

    
por 18.06.2018 / 11:53