Как пропустить уже существующие файлы при загрузке с помощью curl?
Я хочу curl чтобы загрузить ссылку, но я хочу, чтобы она пропускала файлы, которые уже существуют. Сейчас, строки кода, я буду продолжать его заменить никакое mater что:
curl '$url' -o /home/$outputfile &>/dev/null &
как этого можно добиться?
4 ответов
вы можете просто позвонить в curl внутри if блок:
if ! [ -f /home/$outputfile ]; then
curl -o /home/$outputfile "url"
fi
Также обратите внимание, что в вашем примере, у вас есть $url внутри одинарных кавычек, которые не делают то, что вы хотите. Сравнить:
echo '$HOME'
в:
echo "$HOME"
и curl есть --silent опция, которая может быть полезна в скриптах.
используйте wget с --no-clobber вместо:
-nc,--no-clobber: пропустить загрузки, которые будут загружаться в существующие файлы.
пример:
wget -nc -q -O "/home/$outputfile" "$url"
вы можете использовать опцию curl -C -. Этот параметр используется для возобновления прерванной загрузки, но будет пропускать загрузку, если файл уже завершен. Обратите внимание, что аргумент -C одиночное тире. Недостатком может быть то, что curl все еще кратко связывается с удаленным сервером, чтобы запросить размер файла.
на curl может поддерживать пропуск файлов, когда вы используете его с -O и -J, но его поведение непоследовательно.
на -J (--remote-header-name) указывает -O (--remote-name) возможность использовать указанный сервер Content-Disposition filename вместо извлечения имени файла из URL-адреса. Таким образом,curl на самом деле не знает, какое имя файла вернет сервер, поэтому он может игнорировать существующий файл для предосторожности.
источник: Re: - J "отказ от перезаписи..."
например:
$ curl -LJO -H 'Accept: application/octet-stream' 'https://api.github.com/repos/x/y/releases/assets/12345
Warning: Refusing to overwrite my_file.bin: File
Warning: exists
curl: (23) Failed writing body (0 != 16384)
однако, как уже упоминалось, его поведение непредсказуемо, и он не работает для всех файлов.