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

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

tar xvf file.tar.bz2

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

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

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

4 ответа

Решение

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

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

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

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

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

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

Проверьте tar --help для большего количества вариантов.

Вы можете использовать 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, что означает, что мы также хотим распаковать файл)

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

Другие вопросы по тегам