Имя: Пароль:
IT
Админ
Где скачать unzip.exe?
,
0 ivanovpetr79
 
17.02.22
19:56
Для решения нужной мне задачи — распаковка файлов по маске из ZIP архива в Groovy/Java самым эффективным решением оказалось вызов unzip.exe, являющийся частью проекта

https://en.wikipedia.org/wiki/Info-ZIP

На моей машине эта утилита является частью клиентской инсталляции Oracle. Сам проект Info-ZIP заброшен и не развивается с 2009го года.

Где в интернетах скачать готовые билды для Windows? Есть ли более современные реализации или форки?
1 pechkin
 
17.02.22
19:58
У жава на виндах работает?
2 ДенисЧ
 
17.02.22
20:00
unrar прекрасно с зипами справляется.
3 ivanovpetr79
 
17.02.22
20:03
(1) - джава работает и на утюгах, и в холодильниках с телевизорами
4 МихаилМ
 
17.02.22
20:13
5 ДедМорроз
 
17.02.22
20:20
Вообще-то,если у вас windows,то он умеет распаковывать такие файлы через проводник и Com-серверы.
А в linux,насколько я помню,она встроенная.
Можно скачать демо-версию WinZip или WinRar там прилагается распаковщик архивов,причем он,в отличие от самой программы,бесплатный.
6 ДедМорроз
 
17.02.22
20:22
7 ДедМорроз
 
17.02.22
20:23
Ну или взять бесплатную программу
https://www.7-zip.org/
8 vladmenleo
 
18.02.22
05:48
(0) В (7) самое верное решение, севен зип наше фсе
9 Casey1984
 
18.02.22
06:26
(8) +
10 ivanovpetr79
 
18.02.22
11:45
(7) (8) (9) Там самое неверное решение.

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

Самое верное решение в (4), да и то с одним "но": там древняя сборка 2005го года, которую легко найти в сети (является частью Gnu for Windows). Последней сборкой является 2009 года, Которую я и ищу.

В (6) какой-то бред. Это  информация для пользователей, а не программистов
11 ivanovpetr79
 
18.02.22
11:51
Кроме того, вы не задавались вопросом, почему Oracle включил в поставку своего мейнстрим продукта 2021го года кроссплатформенный порт PKUNZIP, который начинался в 1989м году?
12 fisher
 
18.02.22
12:02
А что не так с родными джавовыми либами?
13 fisher
 
18.02.22
12:13
Вот вроде промер несложного многопоточного анзиппинга: https://stackoverflow.com/questions/51920911/how-can-i-unzip-huge-folder-with-multithreading-with-java-preferred-java8
14 ivanovpetr79
 
18.02.22
12:59
(12) - они тормозят, причем очень сильно. В десятки раз, по сравнению даже со стандартной распаковкой Windows.

Кроме того, в "самой лучшей" библиотеке zip4j до сих пор не реализована распаковка нескольких файлов по маске.

В принципе это тривиальная задача из мира Devops и тест на понимание его базовых принципов: скриптовый язык (любой - Groovy, Python, PS, Batch Script) - это клей, которым ты  скрепляешь вызовы готовых оптимизированных под задачу утилит.

Встроенными возможностями языка ты не пользуешься.
15 fisher
 
18.02.22
13:03
(14) "Тормоза" скорее всего из-за однопоточной работы. В описании "самой лучшей" библиотеки zip4j я не вижу декларации мультипоточности.
16 Casey1984
 
18.02.22
13:05
(10) Спасибо, садись, два.
17 fisher
 
18.02.22
13:05
А для быстрого разархивирования мультипоточность критически важна. Дополнительные ядра увеличивают скорость разархивации почти пропорционально.
18 fisher
 
18.02.22
13:11
Но если чистый девопс, то ессно проще найти подходящую готовую утилиту.
19 ivanovpetr79
 
18.02.22
13:14
(17) какой смысл в многопоточности, если нужно по маске распаковать максимум 10 файлов?
20 ivanovpetr79
 
18.02.22
13:15
(16) - эту оценку поставь разрабам Оракла
21 fisher
 
18.02.22
13:19
(19) Какая разница сколько файлов? Каждый файл бьется на чанки, которые разархивируются в разных потоках.
И если ты девопс, то не понимаю твоих проблем. Стандартный линуксовый tar умеет анзиппить в несколько потоков и с какими хочешь опциями. И в новых виндах он теперь тоже есть, кажись.
22 fisher
 
18.02.22
13:26
(19) Если не веришь - просто попробуй разархивировать любой большой файл и посмотри на загрузку ядер. Мультипоточность - это настолько корневая фишка современного архиватора, что в 7-zip даже cpu-бенчмарк встроен, который все ядра загружает.
23 ivanovpetr79
 
20.02.22
14:53
(21)

>Стандартный линуксовый tar умеет анзиппить в несколько потоков
>И в новых виндах он теперь тоже есть, кажись.

Но tar не поддерживает распаковку ZIP архивов.
Для работы с ними в Unix системах испокон веков использовалась отдельная утилита unzip, которая является предметом обсуждения данного треда.

(17) А для быстрого разархивирования мультипоточность критически важна.

Для быстрого  разархивирования *большого количества файлов* или очень огромных файлов.

Кроме того, поддержка многопоточной распаковки ZIP не реализована даже в "самом лучшем архиваторе" 7-Zip:

7-zip supports multithreading decompression only for bzip2 - это ответ самого разработчика, Игоря Павлова.

Какой смысл обсуждать преимущества того, что не существует на практике?

>Какая разница сколько файлов? Каждый файл бьется на чанки, которые разархивируются в разных потоках.

Но это не поддерживается форматом ZIP. Иначе бы было давно реализовано Игорем.

(18) эта утилита уже давно найдена и ее название в названии темы.
24 Смотрящий
 
20.02.22
15:24
(23) Винда видит зип как папку. Давно бы уже разорался как открывать/создавать читать/писать в такие папки
25 rphosts
 
20.02.22
15:25
7-Zip не спасёт отца украинской демократии?
26 ivanovpetr79
 
20.02.22
15:51
(24) и дальше? Этот функционал Microsoft никогда не предоставлял в виде Command Line API.

(25) Что в 7-Zip такого особенного, чтобы ради него нужно было переписывать готовый код на Groovy ?

В тот же самый вопрос касается unrar.

Немного гугла и ты получаешь информации, что там нет имплементации многопоточной работы с ZIP по понятным причинам.
27 ДедМорроз
 
21.02.22
00:59
Если на чанки,то многопоточность будет,а если вы ест архив-одмн чанк-то нет.
28 DEVIce
 
21.02.22
05:29
(26) Там поди переписывать в этом готовом коде аж на месяц работы, да? Сдается мне там работы на час.
29 ДедМорроз
 
21.02.22
07:03
https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line
Здесь два примера на PowerShell и VbScript для тех,кто не верит,что в windows без установки чего-либо можно работать с zip-файлами из командной строки.
30 ivanovpetr79
 
21.02.22
12:24
(28) а потом заказчику даёшь работы на полгода или даже год, пока он добьется разрешения на unrar или 7zip, которую ты притащил как "самое лучшее" решение. Он тебе просто не заплатит за такое "решение".

(29) кстати решение в https://stackoverflow.com/a/1021592/444079 даже  лучше с точки зрения уменьшения зависимостей. Утилита jar является частью JDK, она по умолчанию есть в любом банке в списке разрешенного ПО.
31 fisher
 
21.02.22
12:28
(23) > Но tar не поддерживает распаковку ZIP архивов
Ты прав. Он распаковывает только "затаренные" архивы...
И в части многопоточности ты тоже прав. В общем случае 7-zip параллелит не чанки, а файлы...
Но ведь даже если тот же десяток файлов, как ты говоришь - то все равно будет ускорение в разы, разве нет?
ЗЫ. Стало интересно, что в java делает parallel() для потока зип-файла по той ссылке что я выше кидал. Теперь подозреваю, что тоже по файлам бъет, раз по чанкам это не так просто оказывается (для обычного зипа).
32 Смотрящий
 
21.02.22
12:28
(30) Сгущаешь краски. Если у заказчика горит и он должен добиваться какого то разрешения, то и денег тебе зачехлят, и решение получат.
33 Garykom
 
гуру
21.02.22
12:30
34 Garykom
 
гуру
21.02.22
12:32
(33)+ надеюсь у вас там джава 8 или свежее
35 fisher
 
21.02.22
12:35
(32) Не сгущает. Контроль безопасности ПО заводят не для того, чтобы в пол-пинка можно было любую хрень протащить.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.