2016-06-20 2 views
0

Я пытаюсь прочитать заархивированный файл. Я делаю это, используя команду tar tf abc.tar.xz. Потому что размер файла составляет 1 ТБ, поэтому требуется много времени. Я не очень хорошо знаком с сценарием bash. У меня есть другие команды, а такие, как zcat 3532642.tar.gz | more и tar tf 3532642.tar.xz |grep --regex="folder1/folder2/folder3/folder4/" иКак читать 1TB заархивированный файл за минимальное время

tar tvf 3532642.tar.xz --to-command \ 
'grep --label="$TAR_FILENAME" -H folder1/folder2/folder3/folder4/ ; true' 

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

Кто-нибудь знает, как я могу это сделать за минимальное время для обработки такого огромного количества данных для заархивированного файла. Любая помощь будет оценена!

+2

Вы не будете ускорять распаковку, вы можете ускорить то, что вы делаете в потоке после. Пожалуйста, ясно покажите, что вы делаете с распакованным потоком. –

+0

Я хочу читать содержимое zipped-файла, не распаковывая его, и хочу сделать это для 1TB-файла. Можете ли вы рассказать мне, как я могу сделать это за минимальное время исполнения? – MKB

+4

Не будет разницы во времени при распаковке, проще всего использовать 'zcat'. –

ответ

1

В rrauenza упоминает, так как pigz может не работать для формата xz, есть аналогичный инструмент для pixz параллельно, индексированный XZ сжатия/распаковки.

от man page Очевидно, что Pigz сжимает/декомпрессирует, используя потоки, чтобы использовать несколько процессоров и ядер.

Как и в случае с pigz, эта команда также предоставляет возможность указывать количество потоков, которые можно вызывать параллельно в нескольких ядрах для достижения максимальной производительности.

-p --processes n 
Allow up to n processes (default is the number of online processors) 

Или вы можете вручную получить количество ядер из команды Баш getconf _NPROCESSORS_ONLN и установите значение -p.

Подробнее от GitHub страницы pixz также с подробной информацией о том, как загрузить и установить

(или)

Идущих с tar единственным решением, это может быть сделано только в случае, если имя файла известный в предшествующем

tar -zxOf <file-name_inside-tar> <file-containing-tar> 

с опциями следующим образом: -

-f, --file=ARCHIVE 
      use archive file or device ARCHIV 

    -z, --gzip 
      filter the archive through gzip 

    -x, --extract, --get 
      extract files from an archive 

    -O, --to-stdout 
      extract files to standard output 

Может быть не таким эффективным, как pigz, но тем не менее делает работу.

+0

Но, как упоминалось в rrauenza, его нельзя использовать для расширения .xz. Можете ли вы предложить какие-либо вопросы для такой ситуации? – MKB

+0

@MKB: Можете ли вы попробовать альтернативное решение, используя 'tar', если он тоже не работает, я удалю ответ – Inian

+0

Задание уже выполнено с помощью' tar', но проблема - это время, которое требуется для выполнения, поскольку я упомянутых в описании моего вопроса. – MKB

Смежные вопросы