Как разрешить wget перезаписывать файлы


9

Используя wgetкоманду, как мне разрешить / дать указание перезаписывать мой локальный файл каждый раз, независимо от того, сколько раз я вызываю.

Допустим, я хочу скачать файл с места: http: //server/folder/file1.html

Здесь, всякий раз, когда я говорю wget http://server/folder/file1.html, я хочу, чтобы это file1.htmlбыло перезаписано в моей локальной системе, независимо от времени, когда оно было изменено, уже загружено и т. Д. Мое намерение / случай использования здесь заключается в том, что когда я вызываю wget, я очень уверен, что хочу заменить / перезаписать существующий файл.

Я опробовал следующие варианты, но каждый вариант предназначен / предназначен для какой-то другой цели.

  1. -nc => --no-clobber
  2. -N => Включить отметку времени
  3. -r => Включить рекурсивный поиск

Ответы:


7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q тихий режим, так что вы можете бросить его в cron без вывода команды


В wgetкоманде нет прямой опции, которая делает это без явного указания -O filename?
Гнанам

3
Кажется, что нет способа принудительно перезаписать все файлы при загрузке файлов с помощью wget. Тем не менее, использование опции -N, безусловно, может принудительно загружать и перезаписывать новые файлы. wget -N Перезапишет оригинальный файл, если размер или метка времени изменятся
aleroot

Не правда. направить вывод команды в стандартный вывод и направить его в файл: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani

8

Эта опция работает

wget -N http://server/folder/file1.html

Информация

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.

4

Использовать curlвместо?

curl http://server/folder/file1.html > file1.html

Я не эксперт по Linux. В чем принципиальная разница между wgetи curl? Я уверен, что каждая команда предназначена для определенной цели.
Гнанам

1
@Gnanam: На самом деле они во многом совпадают с базовой утилитой CLI. Оба могут установить HTTP-соединение и сохранить результат на диск. Чтобы ознакомиться с различиями, ознакомьтесь с daniel.haxx.se/docs/curl-vs-wget.html. Независимо от вышесказанного, приведенное выше использование является действительным. В этой общей области есть и другие инструменты: curl.haxx.se/docs/comparison-table.html
Стю Томпсон,

Эти 2 ссылки действительно полезны, чтобы понять разницу.
Гнанам

0

Я не думаю, что вы можете сделать это, если вы также не загрузите каталоги (поэтому передайте флаг -x). Если вы знаете, что это за файл, вы можете использовать -O filename, например:
wget http://yourdomain.com/index.html -O index.html


0

Не проверено: возможно, вы можете работать с wget -r --level=0.

Другая возможность: curl -Oперезаписывает (но использует другой способ выбора имени файла, который может иметь или не иметь значения для вас).


Эта wgetстрока на самом деле не делает правильную вещь, потому что она создает иерархию подкаталогов. curl -Oс другой стороны, правильно загружает файл, перезаписывая существующие копии.
STH

0

Почему бы не поместить небольшую оболочку вокруг wget в ваш скрипт?

Сценарий может переместить все файлы во временную папку, а затем создать удаленные файлы / веб-страницы.

В случае успеха удалите файлы во временном местоположении. В случае неудачи переместите файлы обратно и выдайте ошибку.

Нет простого способа сделать то, что вы хотите, используя только wget, если вы точно не знаете имя всех файлов, в этом случае опция -O позволит вам принудительно указать имя файла загруженного файла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.