-
O GNU
tar
tem uma opção-C
(ou--directory
) que você pode usar. Por exemplotar -C /opt -x -z -f /tmp/my_file.tar.gz
ou
-
Você pode usar um subnível simples. Por exemplo
(cd /opt; tar -xvzf /tmp/my_file.tar.gz)
depois disso, seu diretório atual ainda é
~/
, ocd
afeta somente a sub-rede. Essa abordagem é útil para comandos e utilitários que não possuem uma opção-C
ou equivalente.
Note que você deve se certificar de que os caminhos armazenados no arquivo tar sejam caminhos relativos não caminhos absolutos . Isso é determinado pelo comando usado para criar o arquivo tar. Você pode verificar isso usando tar -tzf ...
e inspecionando o primeiro caractere dos caminhos (por exemplo, /foo/...
é um caminho absoluto, foo/...
ou ./foo/...
são relativos). Tome especial cuidado ao executar isso como root. Você estaria em um mundo de mágoa se em algum lugar em uma longa lista de caminhos relativos houver um /etc/passwd
ou pior. Mas veja opção GNU tar -P - isso pode não ser um problema em sua plataforma específica. Eu checaria com cuidado antes de continuar.