Хитрость заключается в том, чтобы делать то, что предлагает Серхио, не делая это вручную.Это легко, если вы монтируете zip-файл через виртуальную файловую систему с HTTP-поддержкой, а затем используете стандартную команду unzip.Таким образом, вызовы ввода-вывода утилиты распаковки преобразуются в диапазон HTTP, что означает, что только фрагменты zip-файла, которые вы хотите, передаются по сети.
Вот пример для Linux, использующего HTTPFS , очень легкая виртуальная файловая система (использует FUSE).Для Windows существуют аналогичные инструменты.
Получить / построить httpfs:
$ wget http://sourceforge.net/projects/httpfs/files/httpfs/1.06.07.02
$ tar -xjf httpfs_1.06.07.10.tar.bz2
$ rm httpfs
$ ./make_httpfs
Смонтировать удаленный zip-файл и извлечь из него один файл:
$ mkdir mount_pt
$ sudo ./httpfs http://server.com/zipfile.zip mount_pt
$ sudo ls mount_pt
zipfile.zip
$ sudo unzip -p mount_pt/zipfile.zip the_file_I_want.txt > the_file_I_want.txt
$ sudo umount mount_pt
Конечно, вы также можете использовать любые другие инструменты, кроме командной строки.(Мне нужен sudo, потому что кажется, что FUSE настроен таким образом на моей машине, вам это не нужно)
Я знаю, что это старый вопрос, это для других, сталкивающихся с этимпроблема.