Quero usar wget
(de um script php) para baixar arquivos de imagem, mas não quero baixar arquivos com um determinado tamanho.
Posso limitar o tamanho do arquivo wget
? Se não, qual é a melhor maneira?
Se você estiver executando scripts de downloads, considere usar curl
. O Wget pode analisar a saída e buscar recursivamente 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 de manual:
--max-filesize
Especifique o tamanho máximo (em bytes) de um arquivo para download. Se o arquivo solicitado for maior que esse valor, a transferência não será iniciada e a curvatura retornará com o código de saída 63.
NOTA: O tamanho do arquivo nem sempre é conhecido antes do download e, para esses arquivos, essa opção não tem efeito, mesmo que o arquivo a transferência acaba sendo maior que esse limite.
Vale a pena considerar a observação sobre isso apenas funcionar para alguns arquivos. O cliente depende do servidor para relatar o tamanho do arquivo antes de iniciar o download. A maioria, mas certamente nem todos os servidores relatam isso.
$n
bytes:(ulimit -f $(($n/512)); curl --max-filesize $n …)
.curl
será cancelado com um erro se o tamanho do arquivo ultrapassar os$n/512
blocos de 512 bytes.Se você deseja usar o wget, aqui está uma maneira de testar o tamanho do arquivo sem fazer o download:
onde
$URL
é o URL do arquivo que você deseja baixar, é claro.Assim, você pode condicionar seu script com base na saída. tal como:
por limitar o tamanho do download para 20 MB.
(o código é feio, apenas para fins informativos).
fonte
Não parece haver nenhuma maneira razoável de definir um tamanho máximo de arquivo com o wget.
fonte
ulimit
(verbash(1)
,setrlimit(2)
) também irá trabalhar comwget(1)
, embora seja um pouco pesada.O wget tem uma
-Q
--quota
opção que limita a quantidade máxima de download quando vários URLS (lista recursiva ou de entrada) são fornecidos.https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
/programming//a/20318140/4364036
fonte