tar
armazena os caminhos relativos por padrão . O tar GNU até 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, dê uma olhada no que está no arquivo tar:
tar -tvf foo.tar
E anote o nome exato do arquivo. No caso do meu arquivo foo.tar
, eu poderia extrair /home/foo/bar
dizendo:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Então, não, a maneira que 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 razões óbvias e boas pelas quais tar
converte caminhos para os relativos. Uma delas é a capacidade de restaurar um arquivo em locais diferentes da sua fonte original. O outro é 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) por engano.
Nota: se você usar a opção -P
, tar
irá arquivar caminhos absolutos. Por isso, sempre vale a pena verificar o conteúdo de grandes arquivos antes de extrair.