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