Как пропустить уже существующие файлы при загрузке с помощью 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)
однако, как уже упоминалось, его поведение непредсказуемо, и он не работает для всех файлов.