В Интернете есть сервер, на котором размещены терабайты данных, инкапсулированных в многочисленные архивы 7zip (.7z). Некоторые, но не все, эти данные мне интересны. Я только знаю, какие данные интересны, если я могу проверить имена файлов в архиве.

Вопрос: Как я могу получить список 7zip-файлов с удаленного HTTP-сервера, не загружая сначала весь файл?

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

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

2 ответа2

4

Там нет метода на стороне клиента через просто "HTTP", чтобы облегчить то, что вы запрашиваете.

Так что этого не произойдет, если сервер не предоставит вам список, что потребует пользовательского программирования и / или ручной работы на стороне сервера для создания списка.

1

Я нашел способ сделать это в системе, которая поддерживает файловую систему в USErspace (FUSE). Я отвечаю на свой вопрос на случай, если кому-то понадобится сделать то же самое.

Существует модуль FUSE под названием httpfs2, который позволяет подключить URL-адрес HTTP, чтобы он выглядел так, как будто он является частью локальной файловой системы. Httpfs2 может извлекать определенные диапазоны байтов с удаленного сервера в ответ на вызовы чтения файловой системы, которые выполняет программа.

Чтобы установить этот инструмент в Ubuntu Linux:

apt-get install httpfs2

Создайте точку монтирования в файловой системе:

mkdir mount-point

Смонтируйте удаленный URL:

httpfs2 http://remote.server.tld/path/archive-file.7z mount-point

Теперь файл archive-file.7z выглядит как часть файловой системы:

ls mount-point/archive-file.7z
7za l mount-point/archive-file.7z

Чтобы размонтировать каталог:

fusermount -u mount-point

Этот подход позволит вам составить список содержимого любого HTTP-архива (используя правильный инструмент архивации для составления списка содержимого) без загрузки всего (возможно, огромного) архива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .