Как я могу переупаковать zip в 7zip?

Как я могу безопасно и быстро переупаковать zip-архив в архив 7zip?

Я проверил параметры программы 7zip, но я не вижу возможности переупаковки. Я знаю, что могу извлечь в каталог, а затем упаковать этот каталог, но он безопасен? Что делать, если ZIP имеет такие пути, как «../../file.exe» или «/etc/bin/file.exe»?

Я пробовал распаковывать файлы в stdout, и, хотя программа 7zip может это делать, она выводит только содержимое файлов без их имен и т. Д., Поэтому я не могу просто захватить этот вывод и перенаправить куда-нибудь, чтобы упаковать в архив 7zip.

  • Как де-разархивировать, де-tar -xvf - de-unarchive в беспорядочной папке?
  • Ошибка Ubuntu unzip: ошибка sysmalloc не выполнена
  • Добавить файл на другой путь в zip-файле
  • распаковать файл, какой каталог был создан?
  • У меня есть список файлов - результат команды find, как я могу использовать его для zip / tar файлов и удалять исходные файлы
  • Depsolving для php-pecl-zip
  • Распаковать все несуществующие или более старые файлы из архива
  • Распакуйте архив с более чем одной записью
  • One Solution collect form web for “Как я могу переупаковать zip в 7zip?”

    Вам нужно будет извлечь их во временный каталог.

    Согласно unzip (1) ,

    Из соображений безопасности распаковка обычно удаляет компоненты пути «родительский dir» («../») из имен извлеченного файла. Эта функция безопасности (новая для версии 5.50) предотвращает несанкционированное извлечение файлов в «чувствительные» области вне активной ветви дерева папки извлечения.

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

    Вот пример скрипта, но он игнорирует проблемы .. и абсолютного пути:

     #!/bin/sh set -e if [ "$1" == "" -o "$2" == "" ] then echo Usage: $0 archive.zip archive.7z exit 1 fi scratch=`mktemp -d` trap "rm -rf $scratch" EXIT in=`readlink -f $1` out=`readlink -f $2` if [ -f $out ] then echo $out exists. exit 2 fi unzip -d"$scratch" "$in" cd "$scratch" 7z a "$out" . 
    Interesting Posts

    Компиляция пакета для проблем с debian 8

    GRUB не видит разделы ext4 (ошибка: нет такого раздела)

    Что нужно / не следует входить .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?

    Как зашифровать файл с помощью закрытого ключа

    Копирование полного пути файла в текстовый файл

    Синхронизация двух каталогов без rsync

    Раздельный / домашний раздел для архивных дистрибутивов занимает больше места, чем используется

    Проблема BTRFS – исчезновение / повторное появление содержимого? Две независимые версии файловой системы в зависимости от монтируемого субблока

    Стандартный шаблон и расположение имен файлов конфигурации?

    Показывать уведомления OSD без установки libnotify-bin

    Скрытие ключа шифрования в нераспределенном свободном пространстве SSD

    Проблема со словом ntpd

    Лучшая практика использования $? в bash?

    xmodmap и модификатор

    Переписать системный вызов в пользовательском пространстве

    Linux и Unix - лучшая ОС в мире.