Como você extrai uma única pasta de um grande arquivo tar.gz?

Como você extrai uma única pasta de um grande arquivo tar.gz?

Estou usando este comando em um5 GBarquivo

tar -zxvf archive.tar.gz /folder/in/archive

esta é a maneira correta de fazer isso? Parece estar demorando uma eternidade sem saída de linha de comando ...

Responder1

tararmazena caminhos relativospor padrão. GNU tar diz isso mesmo se você tentar armazenar um caminho absoluto:

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names

Se você precisar extrair uma pasta específica, dê uma olhada no que está no arquivo tar:

tar -tvf foo.tar

E observe o nome exato do arquivo. No caso do meu foo.tararquivo, eu poderia extrair /home/foo/bardizendo:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

Então não, a maneira como você postou não é (necessariamente) a maneira correta de fazer isso. Você tem que deixar de fora a barra inicial. Se você quiser simular caminhos absolutos, faça cd /primeiro e certifique-se de ser o superusuário. Além disso, isso faz o mesmo:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

Existem boas razões muito óbvias para tarconverter caminhos em caminhos relativos. Uma delas é a capacidade de restaurar um arquivo em locais diferentes de sua fonte original. A outra é a segurança. Você pode extrair um arquivo, esperar que seus arquivos apareçam em seu diretório de trabalho atual e, em vez disso, sobrescrever os arquivos do sistema (ou seu próprio trabalho) em outro lugar por engano.

Nota: se você usar a -Popção,tar vaiarquivar caminhos absolutos. Portanto, sempre vale a pena verificar o conteúdo de grandes arquivos antes de extraí-los.

informação relacionada