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

bzip2 finalArchive.bz2 file1 file2 file2

Но когда я пытаюсь это сделать, я получаю

Не могу открыть входной файл finalArchive.bz2: Нет такого файла или каталога.

и я получаю эти 3 файлов , сжатых по отдельности file1.gz2 file2.gz2 и file3.gz2 , и я также знаю , что я мог бы cat их в один файл , но я хочу быть аб; е , чтобы сделать это с помощью одной единственной команды.

Я могу сделать это, используя zip:

zip finalArchive.zip file1 file2 file3

и я получаю ожидаемый файл finalArchive.zip

3 ответа3

0

И bzip2 и gzip работают с одним файлом. Когда этот файл сжат, несжатая версия удаляется. При извлечении происходит обратное.

Чтобы поместить несколько файлов в архив bzip2 , сначала используйте tar чтобы поместить их в один файл, а затем сожмите этот файл. Или, поскольку tar "осведомлен о zip", вы можете использовать флаг -j чтобы использовать сжатие bzip2, когда вы создаете архив tar как один шаг.

0

Наиболее распространенные утилиты сжатия Unix (gzip , bzip2 , xz) работают с отдельными файлами, и стандартный способ создания многофайлового архива - это объединение их с tar .

Вы получаете Can't open input file finalArchive.bz2: No such file or directory. ошибка, потому что bzip2 думает, что вы хотите сжать файл с именем finalArchive.bz2 , который, конечно, не существует.

Чтобы выполнить то, что вы хотите, используйте эту команду:

tar -cjf finalArchive.tar.bz2 file1 file2 file3

где опция j указывает tar использовать bzip2 для сжатия архива tar . См. Соответствующий раздел в руководстве по tar для получения более подробной информации.

Если вы используете очень старую версию tar без поддержки сжатия, вам нужно выполнить шаг сжатия вручную:

tar -cf - file1 file2 file3 | bzip2 -c > finalArchive.tar.bz2
0

Удалите finalArchive.zip, просто введите список файлов. Пример скриншота ниже:

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