Как сделать так, чтобы wget не загружал один и тот же файл более одного раза (с расширением и без него)

Вопрос или проблема

Как сделать так, чтобы wget не загружал один и тот же файл более одного раза (с расширением и без него)

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

wget --no-clobber --input text04.txt --directory-prefix=/path/file

** файл text04.txt содержит новые ссылки каждый день, которые могут совпадать с предыдущими днями

При загрузке страницы приходят без расширения (в случае .html). Это не дает файлу открываться нормально, но если я добавляю расширение после загрузки wget, то при повторном выполнении команды “–no-clobber” становится бесполезным, так как добавление .html воспринимается wget как новый файл.

Хотите ли вы добавить расширение (.html), чтобы при повторном выполнении wget не загружать один и тот же файл более одного раза?

Вам нужно добавить одну опцию --html-extension, так что команда будет выглядеть так:

wget --no-clobber --html-extension --input text04.txt --directory-prefix=/path/file

Таким образом, расширение .html будет добавлено автоматически.

Пожалуйста, обратитесь к этому ответу для получения дополнительной информации.

Примечание:

К сожалению, wget не может добавить расширение .html на этапе проверки. Поэтому он всегда будет повторно загружать страницу при указанных опциях --no-clobber и --html-extension, если удаленная страница не имеет расширения .html, но по крайней мере обновит и перезапишет существующую локальную копию страницы вместо того, чтобы записывать еще одну копию.

Удачи

Загрузка только новых файлов с wget с добавлением расширения .html для удобства просмотра

Для такой проблемы я бы предложил загружать с помощью wget, не используя переключатель --html-extension, а затем просто добавлять расширения .html с помощью скрипта позже, в отдельную выходную папку. Мягкие ссылки могут использоваться для связи с контентом, а не создания копии данных, чтобы сэкономить место на диске.

Пример скрипта Bash:

# Папка, куда wget будет загружать файлы, но
# только если они еще не были загружены
Dir_Orig="/some/path/here/wget-original"

# Место, куда будут помещены читабельные версии HTML-файлов
Dir_HTML="/another/folder/final-html"

for File in "$Dir_Orig"/*; do

   # Удалить любые ведущие каталоги из имени файла
   Basename="${File##*/}"

   # Создать жесткую ссылку на файл с расширением .html
   ln "$File" "$Dir_HTML/$Basename".html

done

Ответ или решение

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

1. Использование параметров wget

Рекомендуемый способ — это использование параметров --no-clobber и --html-extension. Вот команда, которую нужно выполнить:

wget --no-clobber --html-extension --input text04.txt --directory-prefix=/path/file
  • --no-clobber: не перезаписывать уже загруженные файлы.
  • --html-extension: автоматически добавляет расширение .html к загружаемым файлам.

Однако стоит отметить, что wget не способен на этапе проверки существования файла учитывать добавленное расширение .html. Это значит, что если удалённая страница будет загружена без расширения, wget будет считать её "новым" файлом при повторном запуске и снова загрузит его.

2. Использование сценария на Bash

Вместо того чтобы прибегать только к wget, можно написать Bash-скрипт, который будет сначала загружать страницы без расширения, а затем добавлять расширение .html после загрузки. Вот пример такого сценария:

# Папка, куда wget будет загружать файлы
Dir_Orig="/some/path/here/wget-original"
# Папка, куда будут помещаться корректные HTML-файлы
Dir_HTML="/another/folder/final-html"

# Выполнение команды wget для загрузки файлов
wget --no-clobber --input text04.txt --directory-prefix=$Dir_Orig

# Создание ссылок на файлы с расширением .html
for File in "$Dir_Orig"/*; do
   # Удаление ведущих директорий из имени файла
   Basename="${File##*/}"
   # Создание жесткой ссылки на файл с добавлением .html
   ln "$File" "$Dir_HTML/$Basename.html"
done

3. Заключение

Таким образом, при использовании комбинации wget и дополнительного скрипта на Bash, вы сможете скачать новые страницы без повторных загрузок одного и того же файла и добавить к ним расширение .html для облегчения доступа.

Этот подход гарантирует, что у вас всегда будет актуальная версия загруженных страниц, а их использование станет проще благодаря добавленному расширению.

Оцените материал
Добавить комментарий

Капча загружается...