Como posso especificar que o curl (via linha de comando) substitui um arquivo, se já existir?

8

Estou usando o curl nesta sintaxe:

curl -o myfile.jpg http://mysite.com/myfile.jpg

Se eu executar este comando duas vezes, recebo dois arquivos:

myfile.jpg
myfile-1.jpg

Como posso dizer ao CURL que eu quero sobrescrever o arquivo se ele existir?

    
por cwd 28.08.2011 / 18:12

2 respostas

19

Uso:

curl http://mysite.com/myfile.jpg > myfile.jpg
    
por 28.08.2011 / 18:47
0

Eu encontrei o mesmo problema e quero reutilizar o mesmo nome de arquivo qualquer que seja o lado do servidor, no seu caso você pode obter o nome do arquivo por basename

➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg

então você pode escrever uma função bash auxiliar como:

➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'

mas no meu caso o nome do arquivo não é sequer parte da url, ele vem com disposição de conteúdo; com enrolar a linha de comando é

$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'

você pode ignorar o -fSL que manipula se o lado do servidor fornecer 302 Redirecionamento; o -R para o registro de data e hora do lado do servidor, -J para considerar o lado do servidor Content-Disposition e -O para alternar para o comportamento de download em vez de descarregar no terminal;

no entanto, ainda sofre recusando-se a sobrescrever se o nome do arquivo existir; Desejo que seja sobrescrito se o timestamp Last-Modified do lado do servidor for mais recente;

acaba com uma solução wget que é capaz de fazer:

$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'

o -N é para verificar o timestamp do lado do servidor e sobrescrever apenas quando o lado do servidor tiver nova versão; --content-disposition é considerar Content-Disposition header; e o comportamento padrão do wget é fazer o download, para o nome do arquivo fornecido pelo lado do servidor.

no seu caso, se você não se importa com o timestamp, é só

$ wget -O myfile.jpg http://mysite.com/myfile.jpg
    
por 02.04.2016 / 01:03