Як дозволити 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
Замінить

Неправда. направляємо вихід команди в stdout і передаємо її у файл: 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/comppare-table.html
Стю Томпсон,

Ці 2 посилання дуже корисні для розуміння різниці.
Гнанам

0

Я не думаю, що ти можеш це зробити, якщо ти також не завантажиш каталоги (тому передай прапор -x). Якщо ви знаєте, що таке файл, ви можете використовувати ім'я файлу -O, наприклад:
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.