No Linux Ubuntu sobre o comando 'tar' para estas versões:
tar -tzf /path/to/filename.tar.gz # Show the content
tar -xzf /path/to/filename.tar.gz # Extract the content
Observe que ambos os comandos usam a z
opção e, bem, eles funcionam conforme o esperado.
Através man tar
de , sobre a z
opção, indica:
-z, --gzip, --gunzip, --ungzip
Filter the archive through gzip(1).
Pergunta
- Por que
tar
o comando usagzip
o comando por meio da'z'
opção?
Pergunta extra
Sobre a Filter the archive through gzip(1).
peça.
- Por que é necessário
"filter"
nos dois comandos mostrados acima? ou Qual é o significado ou contexto defilter
?
Arquivamento e compactação são duas coisas separadas.
A maioria dos programas de arquivamento no Windows (por exemplo
zip
,7z
,rar
, e muitos outros) combina os dois em um programa que faz tanto o arquivamento quanto a compactação - portanto, as pessoas acostumadas a usar o Windows tendem a considerá-los apenas uma coisa inseparável.Embora muitos desses programas existam em unix/linux, principalmente para compatibilidade com sistemas não-unix, é muito mais comum que a funcionalidade de compactação e arquivamento seja feita por programas separados. Ao contrário dos arquivadores do MS-DOS/Windows, os programas nativos unix entendem e fazem uso de metadados de arquivos unix, como propriedade e permissões, e alguns até manipulam ACLs corretamente.
tar
é um programa de arquivamento. Ele permite que um ou mais arquivos sejam armazenados em um arquivo .tar. Este arquivo não está compactado. Ele foi originalmente usado para gravar um fluxo contendo vários arquivos e metadados associados (nomes de arquivos, propriedade, permissões, etc.) em fita. Ou para um arquivo, pois qualquer fluxo de bytes pode ser redirecionado para um arquivo ou canalizado para outro programa.tar
não é o único programa de arquivamento disponível, existem muitos outros, incluindocpio
,ar
,afio
,pax
e muito mais.gzip
é um programa de compressão. Ele pode compactar qualquer arquivo único em uma versão compactada de si mesmo. Ou ele pode compactar dados de stdin e enviá-los para stdout (ou seja, pode funcionar como um "filtro"). Novamente,gzip
não é o único programa de compressão/descompressão disponível, é um de muitos.tar
pode ser usadogzip
para compactar um arquivo .tar antes de ser gravado no disco. E para descompactar um arquivo compactado antes de lê-lo.Dependendo da versão que
tar
você possui, pode ser possível usar outros programas de compactação em vez de, ou também,gzip
. Por exemplo, o GNU tar tem as seguintes opções relacionadas à compressão:E, vale a pena notar, os outros programas de arquivamento também podem ser usados com programas de compactação - por meio de opções de linha de comando como
-z
ou-Z
, etc; ou canalizando a saída do arquivador em um programa de compactação antes de redirecionar a saída do compressor para um arquivo (ou, inversamente, canalizando a saída de um programa de descompactação em um arquivador para listar ou extrair seu conteúdo)Você pode "misturar e combinar" os programas de arquivamento e compactação conforme necessário, permitindo que você aproveite as melhorias na tecnologia de arquivamento e/ou compactação.
A maioria dos arquivadores, incluindo o GNU tar, suporta isso via pipes, mas o GNU tar também possui várias opções internas para alguns programas conhecidos E uma
-I
opção conveniente para usar outros programas de compactação que não possuem sua própria opção interna - talvez implementar um novo algoritmo de compactação ou uma nova implementação de um algoritmo existente. Por exemplo, programas comopigz
,pixz
,pbzip2
etc (em vez degzip
,xz
,bzip2
, etc) que são versões paralelizadas desses programas de compactação que podem tirar proveito de CPUs multi-core/multi-thread para reduzir bastante o tempo necessário para compactar ou descompactar os dados.Um "filtro" é um termo genérico para um programa usado em um pipeline para processar (e possivelmente modificar de alguma forma) a saída de um programa antes de redirecioná-lo para um arquivo ou canalizá-lo para o próximo programa no pipeline.
Alguns programas (como
tar
com-z
etc) podem configurar o pipeline de filtragem, sem exigir que o usuário faça isso no shell (por exemplotar xfz filename.tar.gz
, é basicamente o mesmo quegzip -d filename.tar.gz | tar xf -
, etar cfz filename.tar.gz ...
é essencialmente o mesmo quetar cf - ... | gzip > filename.tar.gz
)Muitos programas unix são escritos para que possam ser usados como filtros em um pipeline - por exemplo
gzip
, pode compactar um arquivo existente ou pode compactar seu fluxo de entrada (stdin) e enviar a saída para stdout .... e um programa simples comocat
pode basta passar seu stdin diretamente para stdout ou opcionalmente numerar as linhas (com-n
), tornar o fim de linha e controle e outros códigos visíveis (com opções como-v
,-E
,-A
,-t
).BTW, porque os pipelines são muito úteis, é muito comum que as pessoas escrevam seus próprios scripts (em awk ou perl ou qualquer outro) para que sejam capazes de receber sua entrada de stdin e escrever para stdout - ou seja, é comum as pessoas escreverem seus filtros próprios.