Я пробовал «-N» и «--no-clobber», но единственный результат, который я получаю, — это получение новой копии существующего файла example.exe с числом, добавленным с использованием этого синтаксиса «example.exe.1». Это не то, что я хотел бы получить. Мне просто нужно загрузить и перезаписать файл example.exe в той же папке, где я уже сохранил копию example.com, без этого wget проверяет, является ли моя старее или новее, уважайте файл example.exe, уже присутствующий в моей папке загрузки. . Как вы думаете, это возможно, или мне нужно создать сценарий, который удалит файл example.exe или, может быть, что-то, что изменит дату его модификации и т. Д.?
Как заставить wget перезаписать существующий файл, игнорируя метку времени?
Ответы (7)
Если вы укажете выходной файл с помощью параметра -O
, он перезапишет любой существующий файл.
Например:
wget -O index.html bbc.co.uk
Запуск несколько раз приведет к перезаписыванию index.html.
-O
.
- person Synetech; 28.03.2016
wget
не позволяет вам перезаписать существующий файл, если вы явно не укажете выходной файл в командной строке с параметром -O
.
Я немного ленив и не хочу вводить имя выходного файла в командной строке, когда оно уже известно из загруженного файла. Поэтому я использую curl следующим образом:
curl -O http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl
Будьте осторожны при загрузке подобных файлов с небезопасных сайтов. Приведенная выше команда запишет файл с именем, которое подключенный веб-сайт хочет назвать (хотя и внутри текущего каталога). Окончательное имя может быть скрыто с помощью перенаправлений и php-скриптов или запутано в URL-адресе. Вы можете в конечном итоге перезаписать файл, который вы не хотите перезаписывать.
И если вы когда-нибудь найдете файл с именем ls
или любым другим заманчивым именем в текущем каталоге после использования curl
таким образом, воздержитесь от выполнения загруженного файла. Это может быть троян, загруженный с мошеннического или поврежденного веб-сайта!
wget https://url.com -O filename_to_squash.py
-- и более того, он объясняет, почему нужно быть осторожным при загрузке и запуске исполняемых файлов!
- person duhaime; 20.04.2021
wget --backups=1 google.com
переименовывает исходный файл с суффиксом .1
и записывает новый файл с предполагаемым именем файла.
Не совсем то, что просили, но в некоторых случаях может быть удобно.
-c
or --continue
Из руководства:
Если вы используете «-c» для непустого файла, а сервер не поддерживает продолжение загрузки, Wget перезапустит загрузку с нуля и полностью перезапишет существующий файл.
Мне нравится опция -c. Я начал с справочной страницы, затем в Интернете, но искал ее несколько раз. Например, если вы транслируете веб-камеру, изображение всегда должно называться image.jpg. Кажется, это должно быть более ясно на странице руководства.
Я использую это в течение нескольких лет для загрузки вещей в фоновом режиме, иногда в сочетании с «limit-rate =» в моем файле wgetrc.
while true
do
wget -c -i url.txt && break
echo "Restarting wget"
sleep 2
done
Создайте небольшой файл с именем url.txt и вставьте в него URL-адрес файла. Установите этот скрипт на свой путь или, возможно, в качестве псевдонима и запустите его. Он продолжает повторять загрузку, пока не будет ошибки. Иногда в конце он зацикливается, отображая
416 Requested Range Not Satisfiable
The file is already fully retrieved; nothing to do.
но это безвредно, просто нажмите Ctrl-C. Я думаю, что он всегда получал нужный мне файл, даже если wget исчерпал количество попыток или соединение временно прервалось. Я загружал вещи в течение нескольких дней с ним. Образ компакт-диска по диалапу, да, всегда с помощью wget.
Мой вариант использования включает два разных URL-адреса, иногда второй не существует, но если он существует, я хочу, чтобы он перезаписывал первый файл.
Проблема использования wget -O
заключается в том, что, когда второй файл НЕ существует, он перезапишет первый файл ПУСТЫМ файлом.
Так что единственный способ, который я мог найти, - это оператор if:
--spider checks if a file exists, and returns 0 if it does
--quiet fail quietly, with no output
-nv is quiet, but still reports errors
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
Это многословно, но я нашел это необходимым. Я надеюсь, что это полезно для кого-то.
Вот простой способ сделать это с обрезкой параметров
url=https://example.com/example.exe ; wget -nv $url -O ${url##*/}
Или вы можете использовать базовое имя
url=https://example.com/example.exe ; wget -nv $url -O $( basename $url )