Извлечь файл из tar.gz, не касаясь диска

Текущий процесс:

  1. У меня есть файл tar.gz. около 2000 из них, но это уже другая история)
  2. Я создаю временный каталог, извлекаю файл tar.gz, открывая 100 000 крошечных файлов (около 600 байт каждый).
  3. Для каждого файла я передаю его в программу обработки, передаю этот цикл в другую программу анализа и сохраняю результат.

Временное пространство на компьютерах, которые я использую, едва может обрабатывать один из этих процессов одновременно, не говоря уже о 16 (гиперпотоковом двухъядерном четырехъядерном процессоре), которые они отправляют по умолчанию. Я ищу способ сделать этот процесс без сохранения на диск. Я считаю, что снижение производительности при индивидуальном извлечении файлов с использованием tar -xf $file -O было бы непомерно высоким, но, возможно, это то, с чем я застрял.

Есть ли способ сделать это?

РЕДАКТИРОВАТЬ: Поскольку два человека уже допустили эту ошибку, я поясню:

  • Каждый файл представляет собой один момент времени.
  • Каждый файл обрабатывается отдельно.
  • После обработки (в данном случае вариант анализа Фурье) каждый дает одну строку вывода.
  • Эти выходные данные можно комбинировать, чтобы выполнять такие действия, как автокорреляция во времени.

EDIT2: Фактический код:

for f in posns/*; do
    ~/data_analysis/intermediate_scattering_function < "$f"
done | ~/data_analysis/complex_autocorrelation.awk limit=1000 > inter_autocorr.txt
5
задан zebediah49 19 June 2012 в 00:06
поделиться