proceso actual:Extraer un archivo de tar.gz, sin tocar el disco
- Tengo un archivo
tar.gz
. (En realidad, tengo alrededor de 2000 de ellos, pero esa es otra historia). - Realizo un directorio temporal, extraigo el archivo
tar.gz
, revelando 100.000 archivos pequeños (alrededor de 600 bytes cada uno). - Para cada archivo, lo incluyo en un programa de procesamiento, lo conecto a otro programa de análisis y guardo el resultado.
El espacio temporal en las máquinas que estoy utilizando apenas puede manejar uno de estos procesos a la vez, no importa el 16 (quad-core dual con doble capa) que reciben de forma predeterminada. Estoy buscando una forma de hacer este proceso sin guardar en el disco. Creo que la penalización de rendimiento para tirar archivos individualmente usando tar -xf $file -O <targetname>
sería prohibitivo, pero podría ser a lo que me ato.
¿Hay alguna forma de hacerlo?
EDIT: Ya que dos personas ya han cometido este error, voy a aclarar:
- Cada archivo representa un punto en el tiempo.
- Cada archivo se procesa por separado.
- Una vez procesadas (en este caso, una variante del análisis de Fourier), cada una proporciona una línea de salida.
- Esta salida se puede combinar para hacer cosas como la autocorrelación en el tiempo.
Edit2: código real:
for f in posns/*; do
~/data_analysis/intermediate_scattering_function < "$f"
done | ~/data_analysis/complex_autocorrelation.awk limit=1000 > inter_autocorr.txt
¿Cuál es el tamaño total del archivo sin comprimir? ¿Cuánto carnero tienes? –
100K archivos * 4 KB de tamaño mínimo de archivo = 400 MB. Tengo 16 GB, así que 16 encajarían sin mucho problema. – zebediah49
Bueno, yo iba a decirle que use un ramdisk entonces, pero @Harald Brinkhof ya lo hizo :) –