22

Есть ли способ выборочно предотвратить сжатие определенных типов файлов в 7-zip, как в WinRAR?

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

4 ответа4

15

Предположим, у вас есть zip-файлы и несжатые txt-файлы в вашей папке.

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

Вы можете использовать -m для установки уровней сжатия, это также зависит от метода сжатия, который вы используете

Предположим, что здесь используется только сжатие по умолчанию

7z a compressed.7z *.txt -r 

Вы получите сжатый 7z сейчас.

Вторым шагом будет копирование уже сжатого файла в этот архив или создание нового архива.

7z u compressed.7z -u!update.7z -mx0 *.zip 

Существует дальнейшая разработка команды обновления здесь

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

13

Да, можно использовать разные методы сжатия для разных файлов в одном и том же архиве 7-Zip.

Используйте версию командной строки 7-Zip с параметром -m чтобы указать метод как « Copy , что означает отсутствие сжатия.

Пример :

7za a -m0=Copy tmp7.7z *.txt

Для получения дополнительной информации см. Ключ -m (Установить метод сжатия).

1

Я создал сценарий PowerShell, который быстро сжимает каталог, сохраняя уже сжатые типы файлов (например, файлы .zip), не пытаясь повторно сжать их. Он использует интерфейс командной строки 7zip и использует расширения имени файла, чтобы решить, следует ли сжимать или просто хранить какой-либо файл.

Вы можете найти скрипт здесь: https://gist.github.com/ivanatpr/5dea086172eab573ba71

0

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

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

Конечно, есть работа и время просмотра файла в первую очередь.

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

Создайте архив 7z и добавьте все, НО сжатые файлы за один проход, затем добавьте предварительно сжатые файлы как несжатые данные. (Я бы сделал это таким образом, так как сжимаемое содержимое было бы тогда в начале архива, а несжимаемое все в конце. Это будет стечь с диска быстрее, так как это смежно)

(слишком много использовал «сжимать ...»!)

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