Как объединить / объединить zip-файлы?

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

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

Я пытаюсь избежать необходимости распаковывать их по одному в рабочую папку, перезаписывать данные из старых zip-файлов данными из новых zip-файлов, а затем резипировать все в новый zip-файл.

из того, что я понимаю, pkzip будет сочетать сами zip-файлы, но есть ли надежный и быстрый бесплатный метод, о котором кто-нибудь может мне рассказать?

30
задан CChriss
18.11.2022 17:08 Количество просмотров материала 2659
Распечатать страницу

7 ответов

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

в противном случае, вы будете в конечном итоге с большим количеством пустая трата процессорного времени:

  • Предположим ваш результат идет первым.zip'
  • все файлы с '2.zip', ' 3.zip ' etc должен быть распакован, а затем снова молнии в 'первый.zip'
  • в 2.zip 'существует файл' foobar.txt' и in ' 3.zip-архив существует другой файл фубар.txt'. слияние его так, как вы хотите объединить это приводит к "сжать его X раз"
  • оглавление .zip находится в конце файла: вы добавляете больше контента (к середине

    .zip путем обновления файла посередине) и весь файл должен быть переписан

так, имхо просто использовать 'распакуйте' wiseley:

% mkdir all
% for x in *.zip ; do unzip -d all -o -u $x ; done
% zip -r all.zip all

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

4
отвечен akira 2022-11-20 00:56

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

Смотрите также zipmerge

4
отвечен Christos 2022-11-20 03:13

Это может быть не то, что вы ищете, но бесплатный инструмент сборки Ant включает в себя возможность слияния Zipfiles.

https://ant.apache.org/manual/Tasks/zip.html

4
отвечен CarlF 2022-11-20 05:30

Я думал, что вы могли бы сценарий файлы извлекаются во временную папку.

есть проблема с этой командной строке. Я не мог найти способ заказать распаковку архивов, поэтому старый архив может перезаписать новый архив. Эта проблема может быть решена с помощью unzipper имеет переключатель командной строки только перезаписать, если новее. В основном я использую 7-Zip, у которого нет такой опции командной строки.

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

for /f %f in ('dir /b *.zip') do "c:\program files-zipz" x %f -oc:\testdir -r -aoa

чтобы изменить это, чтобы использовать другую программу распаковки просто заменить "c:\program files-zipz" x %f -oc:\testdir -r -aoa С любой командой, которую вы будете выполнять в каждом файле. Используйте %f в качестве места для хранения имени файла, который вы хотите распаковать.

Я попытался найти полированное приложение, бесплатное или иное, и на самом деле не нашел один.

надеюсь, это даст вам хороший старт и WinZip или что-то подобное может заботиться о проблеме перезаписи.

удачи.

1
отвечен Scott McClenning 2022-11-20 07:47

https://linux.die.net/man/1/zipmerge:

zipmerge объединяет исходные zip-архивы source-zip в целевой zip архив target-zip. По умолчанию файлы в исходных zip-архивах перезаписывают существующие файлы с тем же именем в целевом zip-архиве.

1
отвечен imz -- Ivan Zakharyaschev 2022-11-20 10:04

Если я правильно помню, pkzip была программа командной строки.

все еще существует версия ZIP для командной строки, которая утверждает, что совместима с pkzip.

Это называется Info-ZIP и должна быть версия для вашей ОС.

0
отвечен pavium 2022-11-20 12:21

найдите командную строку winzip в сети. Winzip имеет несколько версий инструментов командной строки, чтобы соответствовать любой версии winzip вы можете установить. Инструмент командной строки WZZIP имеет опцию-f "освежить", которая будет заархивировать новые файлы только тех, которые соответствуют имени файла в выходном zip-файле суммирования.

используйте wzunzip обернутый в оператор FOR, как показано выше, чтобы распаковать один файл в каталог, а затем WZzip-f, чтобы добавить эти файлы в выходной zip-файл суммирования. Затем Для повторения цикла к работе на следующий входной файл в выходной и выходной файл суммирования. Порядок входных файлов не имеет значения, так как WZzip-f добавит их в выходной файл только в том случае, если входные данные новее того, что уже есть в выходном файле. Также будут добавлены все файлы, которых нет в выходном файле. Затем вы можете распаковать в папку, а затем снова сжать его, чтобы получить качественно упакованный файл. Вы даже можете сделать это автоматически после цикла for В конец пакетного файла.

0
отвечен eewiz 2022-11-20 14:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх