Подтвердить что ты не робот

Как заставить wget перезаписать существующий файл, игнорируя временную метку?

Я попробовал "-N" и "-no-clobber", но единственным результатом, который я получаю, является получение новой копии существующего example.exe с номером, добавленным числом, используя этот синтаксис example.exe.1 ". Это не то, что я хотел бы получить. Мне просто нужно загрузить и перезаписать файл example.exe в той же папке, где я уже сохранил экземпляр example.com без этого wget, проверяет, является ли шахта старше или новее, поскольку файл example.exe уже присутствует в моей папке загрузки, Как вы думаете, возможно ли мне, или мне нужно создать script, который удалит файл example.exe или что-то, что изменит дату его изменения и т.д.?

4b9b3361

Ответ 1

Если вы укажете выходной файл с помощью опции -O, он перезапишет любой существующий файл.

Например:

wget -O index.html bbc.co.uk

Запустите несколько раз, чтобы сохранить чрезмерный текст index.html.

Ответ 2

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

Я немного ленив, и я не хочу вводить имя выходного файла в командной строке, когда он уже известен из загруженного файла. Поэтому я использую завиток следующим образом:

curl -O http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl

Будьте внимательны при загрузке таких файлов с небезопасных сайтов. Вышеприведенная команда напишет файл, названный как связанный веб-сайт, который хочет его назвать (внутри текущего каталога). Окончательное имя может быть скрыто посредством перенаправления и сценариев php или быть запутано в URL-адресе. Вы можете переписать файл, который вы не хотите перезаписывать.

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

Ответ 3

wget --backups=1 google.com

переименовывает исходный файл с суффиксом .1 и записывает новый файл в предполагаемое имя файла.

Не совсем то, что было запрошено, но может быть удобно в некоторых случаях.

Ответ 4

-c или --continue

Из manual:

Если вы используете '-c в непустом файле, а сервер не поддерживает продолжение загрузки, Wget перезапустит загрузку с нуля и полностью перезаписать существующий файл.

Ответ 5

Мне нравится опция -c. Я начал с man-страницы, затем в Интернете, но я искал это несколько раз. Например, если вы передаете веб-камеру, поэтому изображение всегда должно быть названо image.jpg. Похоже, это должно быть более ясно на странице руководства.

Я использую это в течение нескольких лет, чтобы загружать вещи в фоновом режиме, иногда в сочетании с "limit-rate =" в моем файле wgetrc

while true
do
wget -c -i url.txt && break
echo "Restarting wget"
sleep 2
done

Сделайте небольшой файл с именем url.txt и вставьте в него URL-адрес файла. Установите этот script вверх по вашему пути или, возможно, как псевдоним и запустите его. Он продолжает повторять загрузку до тех пор, пока не появится ошибка. Иногда в конце он попадает в цикл, отображающий

 416 Requested Range Not Satisfiable
 The file is already fully retrieved; nothing to do.

но это безобидно, просто ctrl-c это. Я думаю, что он всегда получал файл, который я хотел, даже если у wget закончились попытки или соединение временно уходит. Я загружал вещи в течение нескольких дней одновременно. Изображение CD на dialup, да, всегда с wget.

Ответ 6

В моем примере использования используются два разных URL-адреса, иногда второй не существует, но если он существует, я хочу, чтобы он перезаписывал первый файл.

Проблема использования wget -O заключается в том, что, когда второй файл НЕ существует, он перезапишет первый файл BLANK файлом.

Таким образом, единственный способ найти это с помощью оператора if:

- паук проверяет, существует ли файл, и возвращает 0, если он

- тихонько терпит неудачу, без выхода

-nv тихо, но все же сообщает об ошибках

wget -nv https://example.com/files/file01.png -O file01.png
# quietly check if a different version exists
wget --quiet --spider https://example.com/custom-files/file01.png
if [ $? -eq 0 ] ; then    
    # A different version exists, so download and overwrite the first
    wget -nv https://example.com/custom-files/file01.png -O file01.png
fi

Это многословие, но я счел это необходимым. Надеюсь, это поможет кому-то.