Можно ли комбинировать несколько файлов .gz, чтобы они извлекались в один файл?

Давайте скажем, что у меня есть 3 файла: 1.txt, 2.txt и 3.txt, которые все могут быть gzipped. Я знаю, что gzip позволяет объединять несколько файлов с помощью cat:

cat 1.gz 2.gz 3.gz > 123.gz

Однако при извлечении 123.gz он будет создавать исходные 3 файла.

Можно ли объединить три архива так, чтобы отдельные файлы в архиве были объединены в один файл?

Ответы

Ответ 1

Удивительно, но это действительно возможно.

GNU zip man page: несколько сжатых файлов могут быть объединены. В этом случае gunzip выведет всех участников сразу.

Пример:

Вы можете создать zip следующим образом:

echo 1 > 1.txt ; echo 2 > 2.txt; echo 3 > 3.txt;
gzip 1.txt; gzip 2.txt; gzip 3.txt;
cat 1.txt.gz 2.txt.gz 3.txt.gz > all.gz

Затем извлеките его:

gunzip -c all.gz > all.txt

Теперь содержимое all.txt должно быть:

1
2
3

Это то же самое, что:

cat 1.txt 2.txt 3.txt

И - как вы просили - "gunzip выберет всех участников сразу".

Ответ 2

Чтобы объединить несколько файлов, попробуйте:

gzip -c 1.txt > 123.gz
gzip -c 2.txt >> 123.gz
gzip -c 3.txt >> 123.gz

Впоследствии gzip -dc 123.gz будет эквивалентен cat 1.txt 2.txt 3.txt.