tar - extrai um único arquivo (pequeno) de um grande tar.gz, uso de memória / disco?

1

Estou ciente de que você pode extrair um único arquivo de tar .

tar -xf file.tar.gz /small/single/file

Eu pretendo rodar isso em um sistema embarcado com disco / ram limitado. Eu gostaria de saber como este comando lida com grandes tarballs.

A extração de um único arquivo faz com que todo o tarball seja descompactado na memória? Eu não me importo de descompactar tudo, mas contanto que isso seja feito com um pequeno buffer.

Digamos que eu tenha 100MB de RAM disponíveis e 5MB de espaço em disco disponível. Além disso, /small/single/file tem menos de 5 MB. Além disso, o tarball de origem é de 500MB. Posso extrair com segurança /small/single/file ?

    
por Paul Knopf 21.11.2017 / 08:50

2 respostas

1

A resposta provavelmente depende da implementação de tar que você está usando, mas, de forma realista, eu esperaria que a maioria das implementações processasse o tarball usando um buffer relativamente pequeno. Usando o GNU tar em um tarball comprimido de 2GiB bzip2 , para extrair um único arquivo, recebo

64.07user 4.84system 2:53.45elapsed 97%CPU (0avgtext+0avgdata 4664maxresident)k
4046976inputs+8outputs (0major+1194minor)pagefaults 0swaps

(usando o GNU time ). Como você pode ver, o tamanho máximo de residentes está abaixo de 5 MiB.

    
por 21.11.2017 / 09:10
0

Para minimizar o uso de RAM / disco, recomendo usar canais como este:

gzip -dc file.tar.gz| tar -f - /small/single/file
    
por 21.11.2017 / 11:24

Tags