Usando o tar para descompactar o arquivo no diretório enquanto o shell está em outro lugar

0

Eu pensei que essa seria uma pergunta simples para responder, mas em todos os lugares eu viro TODOS espera que o tar esteja no mesmo diretório que o shell.

Meu arquivo está localizado:

/tmp/my_file.tar.gz

Eu quero extraí-lo para o seguinte diretório:

/opt/

Meu shell está atualmente localizado em:

~/
    
por Karl Morrison 28.09.2018 / 16:33

1 resposta

4

  1. O GNU tar tem uma opção -C (ou --directory ) que você pode usar. Por exemplo

    tar -C /opt -x -z -f /tmp/my_file.tar.gz
    

    ou

  2. 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 é ~/ , o cd 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.

    
por 28.09.2018 / 16:38

Tags