Tar: Arquivamento, Empacotamento e Compactação

  1. Tar: Arquivamento, Empacotamento e Compactação
  2. Tar: Continuando com Algumas Dicas

Opções do tar Utilizados Aqui

 

Opções

  • –create ou -c = Cria um tarball. Tarball é o arquivo gerado pelo programa tar.
  • –extract, –get ou ainda -x = Extrair arquivos
  • –list ou -t  = exibe o conteúdo dos tarballs. Usando juntamente com a opção -f

Qualificadores(são complementos das opções acima)

  • –verbose ou -v = gera mais informações na tela
  • -file ou -f = identifica o arquivo a ser usado ou gerado. Usado juntamente com o -c, -t e -x.
  • –directory ou -C = Muda para pasta especificada antes de iniciar a operação.

 

 

Significado da palavra tar

tar significa tape archive(arquivo de fita), pois era utilizado para armazenar arquivos em fitas.

Resultado de imagem para fita dat computador

 

Definição do Programa Tar

O  programa  tar agrupa diversos arquivos dentro de um único. Por exemplo:

temos 3 arquivos: doc.txt, imagem.jpeg e minhaPlanilha.xls.

Podemos criar um arquivo chamado meuBackup.tar e dentro desse colocar os 3 arquivos citados acima.

A isso damos o nome de empacotamento ou arquivamento. o arquivo meubackup.tar é chamado de tarball.

Resumindo, tar é o programa que empacota e o seu arquivo gerado se chama tarball.

Empacotar não é  a mesma coisa que compactar

Compactar e Compressão

Compactar e comprimir são a mesma coisa.

Compactar ou comprimir é um termo utilizado para se referir a diminuir, contrair ou encolher. Em informática utilizamos programas que compactam arquivos, isto é, geram outros arquivos contendo o mesmo conteúdo, porém menores.

Alguns programas compactadores conhecidos são o gzip, bzip2, xz, winrar, winzip.

  • gzip: é o mais antigo
  • bzip2: mais novo que gzip e com um nível de compactação melhor, ou seja, pode deixar o arquivo menor que gzip.
  • xz: o mais novato e com capacidade de compressão melhor que os  citados acima.
  • winrar: pode ser usado no linux, mas seu uso é mais intenso no outro lado da força: windows
  • winzip: a mesma descrição do winrar. Poderia até copiar e colar 🙂

Desses, logicamente, os 3 primeiros são usados pelo tar para deixar o tarball menor, assim, economizando mais espaço em seu disco rígido.

Para maiores informações e programas associados com tar, leia o manual execuntado o comando: “man tar”

Por que Empacotar e Compactar Arquivos?

Qual a utilidade? vale a pena compactar arquivos?

Sim, vale muiiiito a pena! principalmente se tratando de arquivos de backup.  Ao guardar seus arquivos em um pen drive para backup utilizando empacotamento e compactação eles ficarão muito menor do que apenas usando o copiar e colar.

Outro ponto a ser levado em conta são os backups automáticos diários. Se agendarmos 01 backup do mysql  por dia, ao final de 01 anos teremos 365 arquivos e 03 anos 1095. Se esses 1095 arquivos estiverem compactados sobrará muito mais espaço em disco.

Arquivos e Diretórios a Serem Utilizados

Obs.: Sempre costumo utilzar o “./” que quer dizer pasta atual. Assim, se estou dentro da pasta “/home/elder/diretorio_de_arquivos” e quero remover o arquivo telona.bmp  basto colocar “rm ./telona”  ao invés de  “rm  /home/elder/diretorio_de_arquivos/telona.bmp“. Poderia somente usar  “rm telona.bmp” e o shell entenderia. Mas é sempre recomendado usar o “./”.

Então,

Minha estrutura de arquivos para esse laboratório é a seguinte:

  • Pasta que estou acessado(comando pwd)
[elder@centos65 diretorio_de_arquivos]$ pwd
/home/elder/diretorio_de_arquivos
  • Estrutura da pasta que estou acessado atualmente(comando tree ./)

    ├── imagens
    │   ├── minhaTelinha.bmp
    │   └── telona.bmp
    ├── livros
    │   ├── A_Clash_of_Kings_by_George_R_R_Martin_A_dance_of_ice_amp_amp_fire_-_book_2.epub
    │   ├── A_Dance_with_Dragons_by_George_R_R_Martin_A_dance_of_ice_amp_amp_fire_-_book_5.epub
    │   ├── A_Feast_for_Crows_by_George_R_R_Martin_A_dance_of_ice_amp_amp_fire_-_book_4.epub
    │   ├── A_Game_of_Thrones_by_George_R_R_Martin_A_dance_of_ice_amp_amp_fire_-_book_1.epub
    │   ├── A_Storm_of_Swords_by_George_R_R_Martin_A_dance_of_ice_amp_amp_fire_-_book_3.epub
    │   ├── George_R_R_Martin_-_A_Song_of_Ice_and_Fire_01_-_A_Game_of_Thrones.epub
    │   ├── George_R_R_Martin_-_A_Song_of_Ice_and_Fire_02_-_A_Clash_of_Kings.epub
    │   ├── George_R_R_Martin_-_A_Song_of_Ice_and_Fire_03_-_A_Storm_of_Swords.epub
    │   ├── George_R_R_Martin_-_A_Song_of_Ice_and_Fire_04_-_A_Feast_for_Crow.epub
    │   └── George_R_R_Martin_-_A_Song_of_Ice_and_Fire_05_-_A_Dance_With_Dragons.epub
    └── programas
        ├── opera-stable_62.0.3331.116_amd64.deb
        └── wps-office_11.1.0.8392_amd64.deb
    

    Obs.: A pasta programas acima contém arquivos .deb que por si mesmos são uma espécie de tarballs. Dentro do de cada arquivo .deb há outros arquivos.

  • Tamanho das pastas. (comando du -h ./)
    [elder@centos65 diretorio_de_arquivos]$ du -h ./
    21M	./livros
    7,6M	./imagens
    267M	./programas
    295M	.
    

 

Empacotando com tar

 

Obs.: O lógico é gerar arquivos tarballs, ou seja, os arquivos empacotados, fora do disco ou partição onde se encontra o arquivo ou pasta de origem. Porém, apenas como testes, por enquanto, aqui iremos gerar os tarballs dentro da mesma partição… pior, dentro da mesma pasta. 🙂

o “-vcf”  logo abaixo quer dizer:

  • v = verbose. Usado para gerar informações mais detalhadas sobre o que o programa está fazendo.
  • c = create ou criar 🙂  informa ao tar que quero criar um tarball.
  • f = file ou arquivo 🙂 informa o arquivo que quero criar. No primeiro caso é o livros.tar

 

  1. Empacotando a pasta livros:
    [elder@centos65 diretorio_de_arquivos]$ tar -vcf livros.tar  ./livros
  2. Agora a pasta programas
    [elder@centos65 diretorio_de_arquivos]$ tar -vcf programas.tar  ./programas
  3. Arquivando a pasta imagens
    [elder@centos65 diretorio_de_arquivos]$ tar -vcf imagens.tar  ./imagens

liste o conteúdo da pasta com o comando ls -lh

[elder@centos65 diretorio_de_arquivos]$ ls -lh
total 295M
drwxrwxr-x 2 elder elder 4,0K Ago 28 15:56 imagens
-rw-rw-r-- 1 elder elder 7,6M Ago 28 16:06 imagens.tar
drwxrwxr-x 2 elder elder 4,0K Ago 28 12:39 livros
-rw-rw-r-- 1 elder elder  21M Ago 28 16:05 livros.tar
drwxrwxr-x 2 elder elder 4,0K Ago 28 12:40 programas
-rw-rw-r-- 1 elder elder 267M Ago 28 16:06 programas.tar

acima vemos criados 3 arquivos .tar

A extensão .tar ao final dos três arquivos é apenas uma convenção, não uma obrigatoriedade. Se quisesse poderia colocar qualquer coisa ao final do arquivo gerado que o mesmo funcionária. Lembrando, extensão de arquivos somente é obrigatório no Windows, no linux a única serventia é usar para identificar melhor os arquivos sendo visualizados.

Se observar o tamanho, veremos que não há diferençam, pois ainda não usamos compactação , apenas empacotamento. Abaixo, livros.tar está com o mesmo tamanho da pasta livros, imagens.tar com o mesmo da pasta imagens….

[elder@centos65 diretorio_de_arquivos]$ du -ha --max-depth=1
21M	./livros
21M	./livros.tar
7,6M	./imagens.tar
7,6M	./imagens
267M	./programas
267M	./programas.tar
589M	.

 

Empacotando as 3 Pastas em um Único tarball

  1. Abaixo, empacotamos as pastas ./livros ./imagens ./programas   dentro do arquivo único todas_as_pastas.tar
    [elder@centos65 diretorio_de_arquivos]$ tar -cvf todas_as_pastas.tar  ./livros  ./imagens ./programas

Liste o conteúdo da pasta usando o comando ls -lh

[elder@centos65 diretorio_de_arquivos]$ ls -lh
total 589M
drwxrwxr-x 2 elder elder 4,0K Ago 28 15:56 imagens
-rw-rw-r-- 1 elder elder 7,6M Ago 28 16:06 imagens.tar
drwxrwxr-x 2 elder elder 4,0K Ago 28 12:39 livros
-rw-rw-r-- 1 elder elder  21M Ago 28 16:05 livros.tar
drwxrwxr-x 2 elder elder 4,0K Ago 28 12:40 programas
-rw-rw-r-- 1 elder elder 267M Ago 28 16:06 programas.tar
-rw-rw-r-- 1 elder elder 295M Ago 28 16:31 todas_as_pastas.tar

 

Listando os Arquivos Contidos dentro dos Tarballs

  1. Para exibir o conteúdo usamos o –list ou apenas -t.
    [elder@centos65 diretorio_de_arquivos]$ tar -tf ./programas.tar 
    ./programas/
    ./programas/opera-stable_62.0.3331.116_amd64.deb
    ./programas/wps-office_11.1.0.8392_amd64.deb

     

Extraindo os Arquivos dos Tarballs

Para extrairmos os arquivos dos tarballs usamos a opção -x ou –extract. Também usamos o -C para indicarmos onde será extraído os tarballs

Obs.:  cuidado! Procure sempre extrair o conteúdo dos tarballs dentro de uma pasta que não contenham arquivos com o mesmo nome dos arquivos dentro do tarball, pois serão sobrescritos(salvos por cima 🙂 )

  1. Crie uma pasta na qual serão extraídos o conteúdo dos tarballs
    [elder@centos65 diretorio_de_arquivos]$ mkdir ./extrairAqui
  2. Utilie o -x para extrairmos juntamente com o -C para apontarmos a pasta de destino. Iremos extrair o programas.tar
    [elder@centos65 diretorio_de_arquivos]$ tar -xf ./programas.tar  -C ./extrairAqui/

    Exiba o conteúdo da pasta ./extrairAqui

    [elder@centos65 diretorio_de_arquivos]$ ls -lh ./extrairAqui/
    total 4,0K
    drwxrwxr-x 2 elder elder 4,0K Ago 28 12:40 programas

    Acima vemos a pasta programas gerada. Liste agora o conteúdo dessa pasta

    [elder@centos65 diretorio_de_arquivos]$ ls -lh ./extrairAqui/programas/
    total 267M
    -rw-rw-r-- 1 elder elder  64M Ago 28 12:40 opera-stable_62.0.3331.116_amd64.deb
    -rw-rw-r-- 1 elder elder 204M Ago 28 12:40 wps-office_11.1.0.8392_amd64.deb

Empacotando e Compactando

 

Preparando o Terreno

Acima vimos que os arquivos empacotados não diferem em tamanho dos arquivos ou pastas dos quais foram gerados.  iremos empacotar usando compressão.

obs.: Apenas por convenção, os arquivos empacotados com o compactador gzip recebe a extensão .tgz, os compactados com bzip2  ficam com .tbz. Isto é apenas convenção e não uma obrigatoriedade.

Diferentemente da parte postada acima, aqui irei fazer do modo mais recomendado que é salvarmos os tarballs dentro de uma outra mídia, no meu caso um disco próprio para backup montado em /media/novoDiscoBKP:

[elder@centos65 diretorio_de_arquivos]$ df -h 
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos65-lv_root
                       13G  3,4G  8,7G  28% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             477M   49M  403M  11% /boot
/dev/sdb              4,8G   10M  4,6G   1% /media/novoDiscoBKP

Antes excluiremos os tarballs criados acima. Dentro da pasta acessada( ./ 🙂  ) removeremos todos os arquivos terminados em .tar

[elder@centos65 diretorio_de_arquivos]$ rm -rf ./*.tar

Exclua também a pasta ./extrairAqui

[elder@centos65 diretorio_de_arquivos]$ rm -rf ./extrairAqui

Ficamos com as pastas do início do post

[elder@centos65 diretorio_de_arquivos]$ ls -l ./
total 12
drwxrwxr-x 2 elder elder 4096 Ago 28 15:56 imagens
drwxrwxr-x 2 elder elder 4096 Ago 28 12:39 livros
drwxrwxr-x 2 elder elder 4096 Ago 28 12:40 programas

Vendo o tamano das pastas

[elder@centos65 diretorio_de_arquivos]$ du -h ./
21M	./livros
7,6M	./imagens
267M	./programas
295M	./

 

Lembrando que salvaremos os tarballs dentro de /media/novoDiscoBKP

Compactando com bzip2

  1. bzip2 é representado pela letra j.
[elder@centos65 diretorio_de_arquivos]$ tar -cjf /media/novoDiscoBKP/programas.tbz ./programas  
[elder@centos65 diretorio_de_arquivos]$ tar -cjf /media/novoDiscoBKP/imagens.tbz ./imagens
[elder@centos65 diretorio_de_arquivos]$ tar -cjf /media/novoDiscoBKP/livros.tbz ./livros

Comparando o tamanho dos arquivos

Antes

[elder@centos65 diretorio_de_arquivos]$ du -h 
21M	./livros
7,6M	./imagens
267M	./programas
583M	.

Depois

[elder@centos65 diretorio_de_arquivos]$ du -ah  /media/novoDiscoBKP/
292K	/media/novoDiscoBKP/imagens.tbz
268M	/media/novoDiscoBKP/programas.tbz
21M	/media/novoDiscoBKP/livros.tbz
289M	/media/novoDiscoBKP/

 

Compactando com gzip

Elimine todos os arquivos criados anteriormente

[elder@centos65 diretorio_de_arquivos]$ rm -rf /media/novoDiscoBKP/*.tgz

Gzip é representado pela letra z

[elder@centos65 diretorio_de_arquivos]$ tar -czf  /media/novoDiscoBKP/livros.tgz ./livros
[elder@centos65 diretorio_de_arquivos]$ tar -czf  /media/novoDiscoBKP/imagens.tgz ./imagens
[elder@centos65 diretorio_de_arquivos]$ tar -czf  /media/novoDiscoBKP/programas.tgz ./programas

Antes

[elder@centos65 diretorio_de_arquivos]$ du -h 
21M	./livros
7,6M	./imagens
267M	./programas
583M	.

Depois

[elder@centos65 diretorio_de_arquivos]$ du -ha /media/novoDiscoBKP/
404K	/media/novoDiscoBKP/imagens.tgz
267M	/media/novoDiscoBKP/programas.tgz
20M	/media/novoDiscoBKP/livros.tgz
288M	/media/novoDiscoBKP/

 

Compactando com xz

Eliminaremos os tarballs gerados anteriormente

[elder@centos65 diretorio_de_arquivos]$ rm -rf /media/novoDiscoBKP/*.tgz

 

Para compactar com xz utilizamos o -J(letra j em maiúsculo) 

[elder@centos65 diretorio_de_arquivos]$ tar -cJf /media/novoDiscoBKP/livros.txz  ./livros
[elder@centos65 diretorio_de_arquivos]$ tar -cJf /media/novoDiscoBKP/imagens.txz  ./imagens
[elder@centos65 diretorio_de_arquivos]$ tar -cJf /media/novoDiscoBKP/programas.txz  ./programas/

Antes

[elder@centos65 diretorio_de_arquivos]$ du -h 
21M	./livros
7,6M	./imagens
267M	./programas
583M	.

Depois

[elder@centos65 diretorio_de_arquivos]$ du -ha /media/novoDiscoBKP/
18M	/media/novoDiscoBKP/livros.txz
216K	/media/novoDiscoBKP/imagens.txz
267M	/media/novoDiscoBKP/programas.txz
284M	/media/novoDiscoBKP/

 

Conclusão

Vemos que o processo de apenas empacotar, ou seja, de criar os arquivos .tar é muito mais rápido de que o de empacotar e compactar.

Abaixo uma comparação entre os compactadores:

Compactador Tamanho Original em MB Tamanho Final em MB Porcentagem
GZIP 583 288 -50,60%
BZIP2 583 289 -50,43%
XZ 583 284 -51,29%

 

Siga-nos em nossas redes:

Link Facebook: https://www.facebook.com/gnulinuxbr

Link WhatsApp: https://chat.whatsapp.com/G9xS3Ylzoou3TrN49DQso4

Link Telegram: https://t.me/gnulinux_brasil

YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *