Categorias

Compactando o conteúdo de uma pasta no Linux com TAR + GZIP

O comando TAR é bastante utilizado em sistemas Unix para unir vários diretórios e arquivos em um único arquivo. TAR, basicamente, é a sigla para “tape archiving” (lembre-se, o Unix – e o próprio Linux – é bem antigo). Podemos também combinar o TAR com o GZIP, de forma tal a comprimir o “pacote”.

Existem inúmeras maneiras de utilizar tanto o TAR quanto o GZIP, mas vamos agora dar a você uma dica rápida para unir e compactar todo o conteúdo de um diretório, no Linux (em servidores web rodando tal sistema operacional, por exemplo), utilizando TAR e GZIP.

Vamos aqui considerar um servidor Linux, o qual será acessado remotamente. Tudo o que você precisa fazer é acessar o mesmo através de algum cliente SSH e, então, acessar o diretório cujo conteúdo deseja “empacotar”. Digamos que você deseje o conteúdo da pasta “/home/usertest/public_html” (obviamente, você pode alterar o caminho, o diretório, conforme sua necessidade).

Na linha de comando, digite o seguinte, teclando <ENTER> ao final:

cd /home/usertest/public_html/

Você será, então, levado ao diretório desejado, e verá o seguinte (ou algo semelhante), no shell:

root@host [/home/usertest/public_html]#

Digite, então, o seguinte comando, também teclando <ENTER> ao final:

tar czf nomedoarquivo.tar.gz *

Não se esqueça de alterar “usertest” e “nomedoarquivo” pelo diretório e nome de arquivo corretos. Logo após o procedimento acima, um simples comando “ls” exibirá, na linha de comando, o arquivo “nomedoarquivo.tar.gz” recém gerado.

comando_tar_linux

Exemplo de utilização

Através do comando acima, você pode compactar apenas o conteúdo de uma pasta, excluindo a raiz, digamos. Por exemplo, digamos que você possui um servidor com diversas contas/usuários. Nele, existe o usuário/conta “usertest” (conforme exemplo acima), e você deseja copiar apenas o conteúdo da pasta “public_html” desta conta (excluindo este primeiro nível, ou seja, “public_html”), para então descompactá-lo e/ou transferi-lo para outra pasta “public_html” respeitando a mesma hierarquia. Talvez para o mesmo usuário, em um outro servidor, em uma possível migração, etc.

Com o comando acima você consegue realizar esta operação perfeitamente, gerando um arquivo .tar.gz com todas as pastas, subpastas e arquivos existentes dentro da “public_html” citada, sem no entanto “trazer” esta pasta principal. Fácil, não? Esta dica também funciona caso você queira realizar backup de uma pasta, digamos.

Finalizando

E para finalizar, aí vai o comando necessário para descompactar o arquivo .tar.gz:

tar xvzf nomedoarquivo.tar.gz

Lembre-se de copiá-lo para o diretório correto, antes disso.