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

761856
Jury A

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

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

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

322

6 ответов на вопрос

435
Lewis Diamond

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

bzip2 -d filename.bz2 

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

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

bzip2 -dk filename.bz2 
You can also use bunzip2, which defaults to using the -d (uncompress) option. RonaldB 7 лет назад 3
@LewisDiamond Я запустил `bzip2 -d vim-8.0.tar.bz2`, что привело к` vim-8.0.tar`. Я не мог войти в это. alhelal 6 лет назад 0
@alhelal это потому, что это файл .tar.bz2. Вы распаковали архив, вы остались с распакованным архивом. Распакуйте его с помощью tar -x vim-8.0.tar. Первоначально вы могли использовать `tar -xjvf vim-8.0.tar.bz2`. Lewis Diamond 6 лет назад 3
Небольшое исправление комментария Льюиса, tar также нуждается в -f (по крайней мере для Raspbian Wheezy) следующим образом: tar -xf vim-8.0.tar` JulianHarty 6 лет назад 0
59
Benj

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

bzip2 myfile.txt

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

tar cvjf myfile.tar.bz *.txt

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

Отличный совет по поводу xjvf, только что спас меня. Спасибо! Edgar Aroutiounian 10 лет назад 6
Вы можете просто использовать `tar xjf filename.tar.bz2`. `V` просто добавляет подробный вывод. Держите свой терминал в чистоте! У меня также были проблемы с запуском `tar -xjf`, поэтому обязательно попробуйте запустить его без` -` MrOodles 9 лет назад 4
'tar xf` должно быть достаточно для варианта BSD - флаг `j` используется только при сжатии Mark Fox 8 лет назад 1
20
Levon

Используйте команду bunzip2(или bzip2 -d), чтобы распаковать файл. Для получения дополнительной информации см. Эту страницу руководства ,

7
Franck Dernoncourt

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/ сделал тест:

enter image description here


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

enter image description here

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

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

Было бы полезно, если бы вы могли добавить несколько предложений к вашему ответу, чтобы объяснить, что он делает. fixer1234 8 лет назад 1
@ fixer1234 Опция '-c' копирует распакованный вывод в STDOUT, который затем передается в утилиту tar и представляется как имя файла с использованием '-', так что вы можете упростить это как: `bzip2 -d my_file.tar.bz2; tar xvf my_file.tar` sactiw 8 лет назад 2
Я считаю, что даже это должно работать `bzip2 -dc my_file.tar.bz2 | tar xv`, т.е. нет необходимости использовать опцию -f и соответствующий знак '-' после него, потому что tar может напрямую читать из STDOUT через оператор канала. Кроме того, не стесняйтесь использовать опцию -v, если вы не хотите перечислять обрабатываемые файлы. sactiw 8 лет назад 1
Это не помогает, так как оригинальный постер уже упоминал, что это не архив tar. icedwater 8 лет назад 2
-3
Mr. de Santos
  1. Go to https://cloudconvert.com.
  2. Upload the file.
  3. Convert it into a .tar file.
  4. Download it.
  5. Extract it from there, in your terminal.
Не подходит для действительно больших файлов! narendranathjoshi 8 лет назад 7
Мы суперпользователи. Мы хотим терминальное решение. noɥʇʎԀʎzɐɹƆ 7 лет назад 9

Похожие вопросы