Любая команда 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 тип:
sudo apt-get install lbzip2
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 на частично загруженном четырехъядерном процессоре).