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.
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
- Empacotando a pasta livros:
[elder@centos65 diretorio_de_arquivos]$ tar -vcf livros.tar ./livros
- Agora a pasta programas
[elder@centos65 diretorio_de_arquivos]$ tar -vcf programas.tar ./programas
- 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
- 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
- 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 🙂 )
- Crie uma pasta na qual serão extraídos o conteúdo dos tarballs
[elder@centos65 diretorio_de_arquivos]$ mkdir ./extrairAqui
- 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
- 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
3 Comments to “Tar: Arquivamento, Empacotamento e Compactação”