Любая команда Linux для выполнения параллельной распаковки файла tar.bz2?


17

У меня довольно большой файл (~ 50 ГБ), и для его запуска требуется некоторое время

tar xvf file.tar.bz2

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

Есть ли программы, которые могут достичь этого? Какой точный синтаксис команды использовать для извлечения из файла?

Я использую Ubuntu 12.04

Ответы:


22

lbzip2 и pbzip2 инструменты, которые вы можете использовать для параллельного сжатия и распаковки.

Использование:

lbzip2 -d <file.tar.bz2> 
pbzip2 -d <file.tar.bz2> 

-d опция используется для декомпрессии.

Чтобы установить эти пакеты:

Установите lbzip2Тип lbzip2 :

sudo apt-get install lbzip2

Установите pbzip2Тип pbzip2 :

sudo apt-get install pbzip2

Так что, если я правильно понимаю, мне нужно распаковать, а затем распаковать? Как 2 команды в отличие от tar xvf?
user784637

1
Да, когда вы запустите lbzip2 -d -n 2 file.tar.bz2это даст файл tar. Который должен быть в целости и сохранности.
devav2

1
Со страницы руководства pbzip2 (lbzip2 рассказывает похожую историю): «Файлы, сжатые с помощью pbzip2, также получат значительное ускорение при распаковке с использованием pbzip2. Файлы, сжатые с помощью bzip2, не увидят ускорения, поскольку bzip2 упаковывает данные в один фрагмент это не может быть разделено между процессорами. "
Тапио

1
@Tapio Вот описание для lbzip2"Сжать или распаковать операнды FILE или стандартный ввод в обычные файлы или стандартный вывод, вызвав libbz2 Джулиана Сьюарда из нескольких потоков. Утилита lbzip2 использует несколько потоков и разделитель, связанный с вводом, даже при распаковке файлов .bz2 создан стандартным bzip2 (но см. ошибки ниже). "
devav2

1
Из одного ответа я бы понял, что обе программы нужно как-то использовать вместе, но на самом деле они кажутся альтернативами? (В нем говорится «lbzip2 и pbzip2 - инструменты ...», «Использование: lbzip2 ... pbzip2 ...», «для установки этих ...»)
Volker Siegel

11

Вы можете распаковать ваш архив одной командой, используя -Iопцию tar . Это дает вам возможность использовать любую утилиту сжатия, которая поддерживает эту -dопцию.

tar -I lbzip2 -xvf <file.tar.bz2>

Это очень полезно при работе с большим архивом, поскольку вам не нужно иметь вдвое больше несжатого размера, доступного в целевой файловой системе (временный файл tar и выходной файл). Это также быстрее, так как вам требуется гораздо меньше дискового ввода-вывода.

Конечно, это работает и при сжатии:

tar -I lbzip2 -cvpf <file.tar.bz2> <file>

Проверьте tar --helpбольше вариантов.


1
Другой вариант (например, если ваша версия «tar» не понимает опцию -I)lbzip2 -dc file.tar.bz2 | tar xvf -
Wodin

5

Вы можете использовать pbzip2 с -dфлагом, чтобы "распаковать",

с man-страницы:

  pbzip2 -d myfile.tar.bz2

В этом примере будет распакован файл «myfile.tar.bz2» в распакованный файл «myfile.tar». Он будет использовать автоматически определенное количество процессоров (или 2 процессора, если автоматическое определение не поддерживается).

После распаковки вам нужно распаковать файл

 tar xf myfile.tar

Файл tar - это просто контейнер, к которому вы можете применить несколько алгоритмов сжатия, например, у вас может быть ".tar.gz" или ".tar.bz2", к которым оба применяются разные алгоритмы сжатия. Таким образом, pbzip2 будет только распаковывать архив, но не будет извлекать файлы, используйте их tarдля распаковки. Tar не должен занимать много времени, так как архив уже распакован, и он просто извлечет файлы. (обратите внимание, что мы не используем флаг 'z' или флаг 'j' в команде tar, что означает, что мы также хотим распаковать файл)


1
На странице руководства есть несколько полезных примеров: manpages.ubuntu.com/pbzip2
Саввас Радевич

@Sam Спасибо за ответ - сможете ли вы ответить на комментарий, который я оставил к другому ответу
user784637

2

В вашем случае lbzip2 выглядит намного лучше, чем pbzip2, поскольку он способен ускорить распаковку стандартных файлов .bz2, тогда как pbzip2 этого не делает. (Только что проверил - 17 секунд для lbzip2 против 56 секунд для pbzip2 на частично загруженном четырехъядерном процессоре).

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