Как распаковать файл .bz2


377

У меня есть файл как: filename.bz2мне нужно распаковать.

Я пробовал команду:, tar xvjf filename.tar.bz2но она не работала, так как файл не является tarфайлом.

Как мне распаковать этот файл?

Ответы:


497

Попробуйте следующее:

bzip2 -d filename.bz2

Обратите внимание, что эта команда не сохранит исходный файл архива.

Чтобы сохранить исходный архив, добавьте -kпараметр:

bzip2 -dk filename.bz2

4
Вы также можете использовать bunzip2, который по умолчанию использует опцию -d (uncompress).
RonaldB

2
@LewisDiamond Я побежал bzip2 -d vim-8.0.tar.bz2, это результаты vim-8.0.tar. Я не мог войти в это.
Алхелал

4
@alhelal это потому, что это файл .tar.bz2. Вы распаковали архив, вы остались с распакованным архивом. Извлеките это с tar -x vim-8.0.tar. Первоначально вы могли бы использовать tar -xjvf vim-8.0.tar.bz2.
Льюис Даймонд

Небольшая поправка к комментарию Льюиса, tar также нуждается в -f (по крайней мере, в отношении Распбиана Уизи) следующим образомtar -xf vim-8.0.tar
JulianHarty

66

Чтобы объяснить немного дальше, один файл может быть сжат с bzip2таким образом:

bzip2 myfile.txt

tar требуется только при сжатии нескольких файлов:

tar cvjf myfile.tar.bz *.txt

Следовательно, при распаковке используйте .bz2файл bunzip, при распаковке используйте tar.bz2файл tar xjvf.


6
Отличный совет по поводу xjvf, только что спас меня. Спасибо!
Эдгар Арутюнян

4
Вы можете просто использовать tar xjf filename.tar.bz2. vПросто добавляет подробный вывод. Держите свой терминал в чистоте! У меня также были проблемы с запуском tar -xjf, поэтому обязательно попробуйте запустить его без-
MrOodles

1
tar xfдолжно быть достаточно для варианта BSD - jфлаг используется только при сжатии
Mark Fox


12

bzip2 является однопоточным, что означает, что распаковка большого файла займет много времени.

Чтобы распаковать .bz2файл многопоточно, вы можете использовать бесплатную программу с открытым исходным кодом lbzip2:

sudo apt-get install lbzip2
lbzip2 -d my_file.bz2

-dуказывает на то, что вы хотите распаковать файл. Это автоматически определит, сколько потоков он будет использовать. Чтобы указать точное количество потоков, которые вы хотите использовать, используйте -nпараметр, например:

lbzip2 -d -n 32 my_file.bz2

Еще несколько полезных команд с lbzip2:

Чтобы сжать папку:

tar -c -I lbzip2 -f file.tar.bz2 folder_name

Чтобы распаковать папку:

 tar -I lbzip2 -xvf file.tar.bz2

Параметры:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)
-x, --extract, --get
      extract files from an archive
-v, --verbose
      verbosely list files processed
-f, --file ARCHIVE
      use archive file or device ARCHIVE

Некоторые альтернативы для .bz2многопоточного распаковывания файла:

pbzip2:

sudo apt-get install pbzip2
pbzip2 -d my_file.bz2

mpibzip2: предназначен для использования на компьютерах кластера.


Если вам нужны .bz2эксперименты с большими файлами: https://dumps.wikimedia.org/mirrors.html

Например ( .bz2файл 14 ГБ , 200 ГБ без сжатия):

wget http://dumps.wikimedia.your.org/wikidatawiki/20170120/wikidatawiki-20170120-pages-articles-multistream.xml.bz2 
lbzip2 -d -n 32 wikidatawiki-20170120-pages-articles-multistream.xml.bz2 

http://vbtechsupport.com/1614/ сделал тест:

введите описание изображения здесь


Для получения дополнительной информации относительно параметров для lbzip2: http://explainshell.com/explain?cmd=lbzip2+-d+-n+32+my_file.bz2 :

введите описание изображения здесь


3
bzip2 -dc my_file.tar.bz2 | tar xvf -

работал для меня на Cygwin


1
Было бы полезно, если бы вы могли добавить несколько предложений к вашему ответу, чтобы объяснить, что он делает.
fixer1234

2
@ fixer1234 '-c' опция копирует распакованный вывод в STDOUT, который затем передается в утилиту tar и представляется как имя файла, используя '-', так что вы можете упростить его как: bzip2 -d my_file.tar.bz2 ; tar xvf my_file.tar
sactiw

1
Я считаю, что даже это должно работать, bzip2 -dc my_file.tar.bz2 | tar xvт.е. не нужно использовать опцию -f и соответствующий знак «-» после него, потому что tar может напрямую читать из STDOUT через оператор канала. Кроме того, не стесняйтесь использовать опцию -v, если вы не хотите перечислять обрабатываемые файлы.
Сакхив

2
Это не помогает, так как оригинальный постер уже упоминал, что это не tarархив.
ледяная вода

-4
  1. Перейдите на https://cloudconvert.com .
  2. Загрузите файл.
  3. Преобразуйте его в файл .tar.
  4. Скачать это.
  5. Извлеките его оттуда, в вашем терминале.

7
Не подходит для действительно больших файлов!
narendranathjoshi

9
Мы суперпользователи. Мы хотим терминальное решение.
noɥʇʎԀʎzɐɹƆ

@Г-н. де Сантос ... и тем самым отказаться от контроля над вашими данными. Ты не можешь быть серьезным.
Дирди
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.