Assim como o find, o tar é um utilitário UNIX® de longa data, então a sua sintaxe é um pouco especial:
tar [opções] [arquivos...]
Vamos apresentar abaixo uma lista de algumas opções disponíveis para o tar. Note que todas elas possuem uma opção equivalente com um formato lngo, mas você terá que pesquisá-las em tar(1), já que não trataremos delas neste guia.
![]() | Nota |
---|---|
O hífen ( |
x
: utilizado para extrair os arquivos existentes em um arquivo tar.
v
: aumenta a verbosidade. Lista os arquivos que estão sendo adicionados ou extraídos de um arquivo tar. Se utilizado em conjunto com a opção t
(veja abaixo), é exibida uma listagem longa dos arquivos.
f
<nome_do_arquivo>
: cria um arquivo com o nome nome_do_arquivo
, extrai ou lista os arquivos contidos em nome_do_arquivo
. Se este parâmetro for omitido, o arquivo padrão será o /dev/rmt0
, que é, de maneira geral, um arquivo especial associado a um streamer. Se o valor do parâmerto for -
(um hífen), a entrada ou a saída (dependendo da operação que você está realizando) será associaad à entra ou saída padrão.
z
: informa ao tar que o arquio a ser criado deve ser comprimido com o gzip, ou que o arquivo a ser extraído está comprimido com o gzip.
j
: faz o mesmo que a opção z
, mas utiliza o bzip2 para comprenssão do arquivo.
p
: preserva o atributo dos arquivos que são extraídos, incluindo o dono do arquivo, o último acesso e outros. Muito útil para cópias de sistemas de arquivo.
r
: adiciona os arquivos indicados na linha de comando a um arquivo tar exisente. Note que o arquivo tar não deve estar comprimido para poder receber novos arquivos.
A
: concatena o conteúdo de arquivos tar passados na linha de comando ao arquivo tar indicado com a opção f
. Assim como na opção r
, o arquivo tar não deve estar comprimido.
Há muitas outras opções que não estão listadas aqui, e você pode encontrar uma lista completa em tar(1). Veja, por exemplo, a opção d
.
Vamos seguir com um exemplo. Digamos que você queira arquivar todas as imagens do diretório /shared/images
, em um arquivo comprimido com o bzip2 e chamado imagens.tar.bz2
dentro do seu diretório /home
. Você então digitaria:
# # Nota: você deve estar no diretório em que # estão os arquivos que você quer compactar! # $ cd /shared $ tar cjf ~/imagens.tar.bz2 images/
Como você pode ver, nós utilizamos três opções aqui: c
informa ao tar que nós queremos criar um arquivo, a opção j
serve para comprimí-lo com o bzip2, e f ~/imagens.tar.bz2
que o arquivo será criado em nosso diretório home e que deverá ser chamado imagens.tar.bz2
. Agora nós podemos fazer um teste com o arquivo pedindo para listar o seu conteúdo:
# # Volte ao diretório home do usuário # $ cd $ tar tjvf imagens.tar.bz2
Aqui nós dizemos ao tar para listar (t
) os arquivos compactados em imagens.tar.bz2
(f imagens.tar.bz2
), informando que este arquivo foi compactado com o bzip2 (j
), e que quermos uma listagem longa (v
). Agora, digamos que você apagou o diretório das imagens. Felizmente o seu arquivo ainda está intacto e agora você quer extrair o conteúdo dele para onde ele estava antes, no diretório /shared
. Mas como você quer continuar a verificar as imagens novas com o comando find, você precisará preservar os atributos das imagens quando extraí-las:
# # acesse o diretório onde você quer extrair os arquivos # $ cd /shared $ tar jxpf ~/imagens.tar.bz2
Pronto, imagens estão recuperadas!
Mas vamos supor que você queira extrair do arquivo apenas o diretório images/cars
e mais nada. Assim você pode executar:
$ tar jxf ~/imagens.tar.bz2 images/cars
Se você tentar fazer uma cópia de seguraça de arquivos especiais, o tar irá copiá-los da maneira como eles são, arquivos especiais, e não irá copiar os seus conteúdos.Sendo assim, você pode fazer uma cópia do arquivo /dev/mem
, por exemplo, em um arquivo tar. Ele também lida de maneira correta com links. Para links simólicos, dê uma olhada na opção h
na página do manual do programa.
Nós já vimos estas aplicações trabalhando em conjunto com o tar. Mas diferentemente do WinZip® no Windows®, o arquivamento e a compresão aqui são feitos por utilitários separados: tar para o arquivamento, e os dois programa que vamos ver agora para a compressão de dados: bzip2 e gzip. Você também pode utilizar outras ferramentas para compressão, como o zip, arj ou rar, pois eles também estão disponíveis no GNU/Linux, embora sejam raramente utilizados.
O bzip2 foi escrito como um substituto ao gzip. Sua taxa de compressão é melhor que a do gzip, mas em contrapartida, ele exige mais recursos do sistema. Além disso, o gzip ainda é bastante utilizado por motivos de compatibilidade com sistemas antigos.
Ambos os comandos possuem uma sintaxe semelhante:
gzip [opções] [arquivo(s)]
Se nenhum nome de arquivo for indicado, tanto o gzip quato o bzip2 irão receber os dados da entrada padrão e enviar o resultado para a saída padrão. Assim, você pode usar os dois comandos em redirecionamentos com pipes. Ambos os comandos também possuem algumas opções em comum:
Agora alguns exemplos. Vamos dizer que você quer compactar todos os arquivos que terminam com .txt
no diretório em que você está utilizando o bzip2 com compressão máxima. Você então poderia executar:
$ bzip2 -9 *.txt
Vamos supor que você quer compartilhar as suas imagens compacadas com alguém, mas esta pessoa não possui o bzip2 no sistema, apenas o gzip. Você não precisa descompactar o arquivo e recompactá-lo, você pode descompacta-lo para a saída padrão, usar um pipe, compactar da entrada padrão e redirecionar a saída para o novo arquivo. Desta forma:
bzip2 -dc imagens.tar.bz2 | gzip -9 >imagens.tar.gz
Você poderia ter usado o bzcat em vez do bzip2 -dc. Há um equivalente para o gzip mas o seu nome é zcat, e não gzcat. Também existe o bzless para arquivos bzip2 e o zless para a gzip se você quiser visualizar diretamente os arquivos compactados, sem a necessidade de descompactá-los antes. Como exercício, tente encontrar o comando que você deveria digitar para visualizar arquivos compactados sem a a necessidade de desompactá-los, e sem utilizar o bzless ou zless.