Uso:
curl http://mysite.com/myfile.jpg > myfile.jpg
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?
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