Как смешать файлы сжатых и сохраненных типов в одном файле ZIP - PullRequest
0 голосов
/ 20 января 2019

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

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

4.1.8 Каждый файл данных, помещенный в ZIP-файл, МОЖЕТ быть сжат, сохранен, зашифрован или подписан цифровой подписью, независимо от того, как другие файлы данных в одном и том же ZIP-файле архивируются.

Если это было необходимо, эта техническая возможность подтверждается типом носителя, зарегистрированным в реестре IANA по адресу application / zip :

а. Заголовок локального файла:

подпись локального заголовка файла 4 байта (0x04034b50) .. метод сжатия 2 байта

До сих пор я безуспешно пробовал несколько параметров zip (-f -u -U, ..)

В идеале команда должна сжимать текстовые файлы и хранить двоичное содержимое, различающееся по расширению (например, html, css, js будет считаться текстом, а jpg, ico, jar - двоичным).

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Добавляя к ответу @ cody, вы также можете сделать это для каждого файла (группы) с помощью -g и -0. Что-то вроде:

zip archive.zip compressme.txt
zip -g archive.zip -0 dontcompressme.jpg
-#
(-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
       Regulate the speed of compression using the specified digit #, where -0
       indicates no compression (store all files), -1 indicates the fastest 
       compression speed (less compression) and -9 indicates the slowest
       compression speed (optimal compression, ignores the suffix list).
       The default compression level is -6.

-g
--grow
       Grow  (append  to) the specified zip archive, instead of creating a new one.
       If this operation fails, zip attempts to restore the archive to its original
       state. If the restoration fails, the archive might become corrupted.
       This option is ignored when there's no existing archive or when at least
       one archive member must be updated or deleted.
0 голосов
/ 20 января 2019

Вы ищете флаг -n?

-n suffixes
--suffixes suffixes

 Do not attempt to compress files named with the given suffixes. Such files are simply
 stored (0% compression) in the output zip file, so that zip doesn't waste its time trying
 to compress them. The suffixes are separated by either colons or semicolons. For example:

       zip -rn .Z:.zip:.tiff:.gif:.snd  foo foo

 will copy everything from foo into foo.zip, but will store any files that end in .Z,
 .zip, .tiff, .gif, or .snd without trying to compress them.
...