С помощью файлов gzip вы можете просто объединить файлы вместе, например:
cat file1.gz file2.gz file3.gz > allfiles.gz
Согласно gzip RFC ,
Файл gzip состоит из ряда «членов» (сжатых наборов данных). [...] Члены просто появляются в файле один за другим без дополнительной информации до, между или после них.
Обратите внимание, что это не совсем то же самое, что создание одного gzip-файла со связанными данными; среди прочего, сохраняются все исходные имена файлов. Однако похоже, что gunzip обрабатывает это как эквивалент конкатенации.
Поскольку существующие инструменты обычно игнорируют заголовки файлов для дополнительных членов, извлечь отдельные файлы из результата нелегко. Если вы хотите, чтобы это было возможно, вместо этого создайте ZIP-файл. ZIP и GZIP оба используют алгоритм DEFLATE для фактического сжатия (ZIP поддерживает некоторые другие алгоритмы сжатия, а также опцию - метод 8 соответствует сжатию GZIP); разница в формате метаданных. Поскольку метаданные не сжаты, достаточно просто удалить заголовки gzip и вместо этого добавить заголовки файлов ZIP и запись центрального каталога. См. Спецификацию формата gzip и спецификацию формата ZIP .
cat file1.gz file2.gz file3.gz > allfiles.gz
. Это действительно так просто :)cat
ответ, но с некоторыми дополнительными метаданными. Позже вы можете распаковать их, чтобы получить исходные имена файлов, а затем распаковать все или только несколько файлов по мере необходимости.zcat
распаковывает свой ввод, чтобы получить распакованный вывод с.gz
расширением.Вот что
man 1 gzip
говорит о вашем требовании.Само собой разумеется,
file1
можно заменить наfile1.gz
.Вы должны заметить это:
Итак, чтобы получить всех участников индивидуально, вам нужно будет использовать что-то дополнительное или написать, если вы хотите это сделать.
Однако это также рассматривается на странице руководства.
источник
Просто используйте cat. Очень шустрый (у меня 0,2 секунды на 500 МБ)
Затем вы можете прочитать вывод с помощью zcat, чтобы убедиться, что он красивый:
Я попробовал другой ответ «gz -c», но в итоге я получил мусор при использовании уже сжатых файлов в качестве входных данных (я думаю, он дважды сжал их).
PV:
А еще лучше, если он у вас есть, вместо cat:
Это дает вам индикатор выполнения, но делает то же самое, что и cat.
источник
Вы можете создать tar-файл из этих файлов, а затем сжать tar-файл, чтобы создать новый файл gzip.
источник