Como posso limitar o tamanho do arquivo baixado no wget?

12

Eu quero usar wget (de um script php) para baixar arquivos de imagem, mas não quero baixar arquivos de um determinado tamanho.

Posso limitar o tamanho do arquivo com wget ? Se não, qual é a melhor maneira?

    
por T. Brian Jones 10.07.2011 / 23:05

3 respostas

12

Se você estiver fazendo downloads de scripts, considere o uso de curl . O Wget pode analisar a saída e recursivamente buscar sites inteiros, mas o curl tem muito mais opções relacionadas ao download real de um arquivo específico. Aqui está a opção relevante na página man:

--max-filesize
Specify the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer will not start and curl will return with exit code 63.
NOTE: The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit.

A nota sobre isso só funciona para alguns arquivos vale a pena considerar. O cliente depende do servidor para informar o tamanho do arquivo antes de iniciar o download. A maioria, mas certamente nem todos os servidores relatam isso.

    
por 10.07.2011 / 23:10
5

Se você quiser usar o wget, aqui está uma maneira de testar o tamanho do arquivo sem fazer o download:

wget --spider $URL 2>&1 | awk '/Length/ {print $2}'

onde $URL é o URL do arquivo que você deseja baixar, é claro.

Assim, você pode condicionar seu script com base na saída. como:

{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big

para limitar o tamanho do download a 20 MB.

(o código é feio, apenas para fins informativos).

    
por 12.07.2011 / 03:57
1

Parece não haver nenhuma maneira razoável de definir um tamanho máximo de arquivo com o wget.

    
por 11.07.2011 / 00:12

Tags