Подтвердить что ты не робот

Есть ли слияние GZIP, которое объединяет два файла GZIP без их распаковки?

Скажем, там a.gz и b.gz.

$gzip_merge a.gz b.gz -output c.gz

Я хотел бы иметь эту программу. Конечно,

$cat a.gz b.gz > c.gz

не работает. Поскольку последний блок DEFLATE для a.gz имеет BFINAL и заголовок GZIP для b.gz. (См. RFC1951, RFC1952). Но если вы отключили BFINAL, выбросьте второй заголовок GZIP и пройдите через границы байта второго файла gzip, вы можете объединить его.

На самом деле, я думал о написании программы с открытым исходным кодом по этому вопросу, но не знал, как ее публиковать. Поэтому я попросил Джоэля быть моим программным менеджером, и я провел его через мои объяснения и защиту, он наконец понял, что я хотел сделать, но сказал, что он слишком занят.: (

Конечно, я мог бы написать сам и попытаться опубликовать его. Но я не могу сделать это один, потому что моя дневная работа принадлежит собственности моего работодателя.

Есть ли волонтеры? Мы могли бы работать программистом (я), издателем (вы) или программистом (вы), издателем (мной). Все, что мне нужно - это кредит. Однажды я реализовал универсальную декомпрессорную виртуальную машину, описанную в RFC3320. Поэтому я знаю, что это возможно.

ИЛИ, вы можете указать мне программу THAT. Было бы очень полезно управлять файлами журналов, например, объединять файлы журнала 365 (день) gzipped с одним файлом.;)

Спасибо.

4b9b3361

Ответ 1

Конечно, cat a.gz b.gz > c.gz не работает.

Собственно, все работает отлично. Я просто протестировал его. Он даже задокументирован (сорт) на странице gzip man.

   Multiple  compressed  files  can  be concatenated. In this case, gunzip
   will extract all members at once. For example:

         gzip -c file1  > foo.gz
         gzip -c file2 >> foo.gz

   Then

         gunzip -c foo

   is equivalent to

         cat file1 file2

Ответ 2

Вы также можете:

zcat a.gz b.gz > c.txt && gzip c.txt

пока ваш дистрибутив Linux/Unix имеет встроенный zcat, который большинство из них делает (и вы можете установить его для тех, которые этого не делают.)

В качестве альтернативы:

zcat a.gz b.gz | gzip -c > c.txt.gz