%20de%20un%20tar.gz%20grande%2C%20%C2%BFuso%20de%20memoria%2Fdisco%3F.png)
Soy consciente de que puedes extraer un solo archivo de tar
.
tar -xf file.tar.gz /small/single/file
Tengo la intención de ejecutar esto en un sistema integrado con disco/ram limitado. Me gustaría saber cómo maneja este comando archivos tar grandes.
¿Extraer un solo archivo hace que todo el tarball se descomprima en la memoria? No me importa descomprimirlo todo, pero siempre que lo haga con un pequeño búfer.
Digamos que tengo 100 MB de RAM disponibles y 5 MB de espacio en disco disponibles. Además, /small/single/file
tiene menos de 5 MB. Además, el archivo tar de origen es de 500 MB. ¿Puedo extraer con seguridad /small/single/file
?
Respuesta1
La respuesta probablemente dependa de la implementación que tar
esté utilizando, pero de manera realista, esperaría que la mayoría de las implementaciones procesen el tarball utilizando un búfer relativamente pequeño. Usando GNU tar
en un bzip2
tarball comprimido de 2GiB, para extraer un solo archivo, obtengo
64.07user 4.84system 2:53.45elapsed 97%CPU (0avgtext+0avgdata 4664maxresident)k
4046976inputs+8outputs (0major+1194minor)pagefaults 0swaps
(usando GNU time
). Como puede ver, el tamaño máximo residente es inferior a 5MiB.
Respuesta2
Para minimizar el uso de RAM/disco, recomendaría usar tuberías como esta:
gzip -dc file.tar.gz| tar -f - /small/single/file