Como extrair um único arquivo do tbz

Como extrair um único arquivo do tbz

Eu tenho o seguinte diretório arquivado:

itunes20140618.tbz

Quero extrair um único arquivo chamado:

itunes20140618/video

Como eu faria isso?

Até agora estou fazendo

$ bzip2 -d /tmp/itunes20140618.tbz 

Mas parece criar um diretório tar de tudo. Como eu extrairia apenas um único arquivo de vídeo?

Atualmente, se eu extrair um arquivo via tar, leva cerca de 1 minuto e depois 'trava' por mais 20 minutos enquanto termina de ler o arquivo tar. Alguma idéia de como melhorar isso?

Responder1

tar -xvjf itunes20140618.tbz itunes20140618/video

Isso deve bastar neste caso, mas se precisar de mais ajuda, faça:

info tar

Para extrair membros específicos do arquivo, forneça os nomes exatos dos membros como argumentos, conforme impresso por --list (-t). Se você excluiu por engano um dos arquivos que colocou no arquivo collection.tar anteriormente (por exemplo, blues), poderá extraí-lo do arquivo sem alterar a estrutura do arquivo. Seu conteúdo será idêntico ao arquivo original bluesque você excluiu.

Primeiro, certifique-se de estar no practicediretório e liste os arquivos nele. Agora, exclua o arquivo bluese liste os arquivos no diretório novamente.

Agora você pode extrair o membro bluesdo arquivo `collection.tar' assim:

 $ tar --extract --file=collection.tar blues

Se você listar os arquivos no diretório novamente, verá que o arquivo bluesfoi restaurado, com suas permissões originais, horários de modificação de dados e proprietário. (Esses parâmetros serão idênticos àqueles que o arquivo tinha quando você o colocou originalmente no arquivo; quaisquer alterações que você possa ter feito antes de excluir o arquivo do sistema de arquivos, entretanto, _não_ terão sido feitas no membro do arquivo.) O arquivo compactado, collection.tar, é o mesmo que era antes de você extrair o blues. Você pode confirmar isso executando tar com --list (-t).

Responder2

Um arquivo como um arquivo .zip, .rarou .7zconsiste em muitos arquivos agrupados e compactados. Um .tararquivo consiste em muitos arquivos agrupados, mas o formato tar não inclui nenhuma compactação. Um arquivo .gz, .bz2or .xzé um único arquivo compactado. A .tar.gz, .tar.bz2, etc. é um arquivo compactado; .tbzé um sufixo que é ocasionalmente usado em vez de .tar.bz2, assim como às .tgzvezes é usado em vez de .tar.gz.

bzip2 -d /tmp/itunes20140618.tbzdescompacta o arquivo. Você fica com o arquivo tar descompactado. bzip2não cria um tar: ele descompacta o que é fornecido a ele e, como recebe um tar compactado, a saída é um tar descompactado. Você pode descompactar o arquivo resultante com a extensão tar -xf /tmp/itunes20140618.tar. Para extrair apenas um arquivo, é tar -xf /tmp/itunes20140618.tar itunes20140618/video.

Versões razoavelmente recentes do tar no Linux, FreeBSD, MINIX3 e OSX detectam automaticamente os arquivos compactados, então você pode chamar o tar em primeiro lugar sem se preocupar com a compactação usada no arquivo:

tar xf itunes20140618.tbz itunes20140618/video

Versões mais antigas do tar, assim como muitos sistemas atuais, como OpenBSD, Solaris e Linux com BusyBox, podem pelo menos chamar bzip2nos bastidores, mesmo que você precise informá-los explicitamente com a -jopção.

tar -xjf itunes20140618.tbz itunes20140618/video

informação relacionada