tar
armazena caminhos relativos por padrão . O tar do GNU diz isso 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, veja o que está no arquivo tar:
tar -tvf foo.tar
E anote o nome do arquivo exato. No caso do meu foo.tar
arquivo, eu poderia extrair /home/foo/bar
dizendo:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Portanto, não, a maneira como você postou não é (necessariamente) a maneira correta de fazê-lo. Você tem que deixar de fora a barra principal. Se você deseja simular caminhos absolutos, faça cd /
primeiro e verifique se você é 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 razões muito óbvias e boas pelas quais tar
converte caminhos em caminhos relativos. Uma é a capacidade de restaurar um arquivo em outros locais que não sua fonte original. O outro é segurança. Você pode extrair um arquivo morto, esperar que seus arquivos apareçam no seu diretório de trabalho atual e substituir os arquivos do sistema (ou seu próprio trabalho) em outro lugar por engano.
Nota: se você usar a -P
opção, tar
irá arquivar caminhos absolutos. Por isso, sempre vale a pena verificar o conteúdo de grandes arquivos antes de extrair.