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 arquivocollection.tar
anteriormente (por exemplo,blues
), poderá extraí-lo do arquivo sem alterar a estrutura do arquivo. Seu conteúdo será idêntico ao arquivo originalblues
que você excluiu.Primeiro, certifique-se de estar no
practice
diretório e liste os arquivos nele. Agora, exclua o arquivoblues
e liste os arquivos no diretório novamente.Agora você pode extrair o membro
blues
do arquivo `collection.tar' assim:
$ tar --extract --file=collection.tar blues
Se você listar os arquivos no diretório novamente, verá que o arquivo
blues
foi 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 oblues
. Você pode confirmar isso executandotar
com--list (-t)
.
Responder2
Um arquivo como um arquivo .zip
, .rar
ou .7z
consiste em muitos arquivos agrupados e compactados. Um .tar
arquivo consiste em muitos arquivos agrupados, mas o formato tar não inclui nenhuma compactação. Um arquivo .gz
, .bz2
or .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 .tgz
vezes é usado em vez de .tar.gz
.
bzip2 -d /tmp/itunes20140618.tbz
descompacta o arquivo. Você fica com o arquivo tar descompactado. bzip2
nã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 bzip2
nos bastidores, mesmo que você precise informá-los explicitamente com a -j
opção.
tar -xjf itunes20140618.tbz itunes20140618/video