segunda-feira, 13 de outubro de 2014

O comando tar em 9 exemplos.

Fonte:http://elias.praciano.com/2014/02/o-comando-tar-em-9-exemplos/

O comando tar é uma ferramenta eficiente e que tem sido muito usada, por muito tempo para compactar arquivos, diretórios, discos inteiros etc. — muitas vezes com o objetivo de fazer volumosos backups. Sim. Ele aguenta trabalho pesado.
Neste post, vou mostrar, através de alguns exemplos, como realizar algumas operações com o comando tar.
E, quando falamos nele, nos referimos tanto a um formato de arquivo quanto a um programa — presente no 
UNIX desde seus primeiros dias e desenvolvido, inicialmente, para gravar dados em dispositivos sequencias (gravadores de fitas).
O mundo mudou, os dispositivos de gravação evoluíram e o tar continua sendo muito utilizado – predominantemente como meio de comprimir múltiplos arquivos.

1. Como criar um arquivo tar simples

Um arquivo tar é comumente chamado, em inglês, tarball (bola tar) e pode ser facilmente criada a partir de um diretório. No exemplo, abaixo, vou mostrar a criação de arquivos_temporarios.tar, a partir do conteúdo do meu diretório temp/:

tar -cvf arquivos_temporarios.tar temp/
temp/
temp/portuguese_brazil.zip
temp/portuguese_brazil.lng

As opções usadas na declaração tar -cvf têm os seguintes efeitos:

  • c – (create) cria uma novo arquivo .tar
  • v – (verbose) torna a execução do comando mais “verbosa”, ou seja, ele vai “contando” o que está fazendo
  • f – indica que o resultado será do tipo arquivo (file)

Você pode experimentar usar -vv em substituição ao -v para ver o comando ser executado com mais verbosidade.

2. Como criar um arquivo .tar.gz

Um arquivo .tar.gz nada mais é que um arquivo .tar comprimido através do gzip – é por isto que ele tem o .gz na sua extensão. Para atingir este objetivo, use a opção -z, em conjunto com as anteriores. Veja:

tar -cvzf arquivos_temporarios.tar.gz temp/

Note que acrescentei o z e alterei o nome do arquivo de saída para temporarios.tar.gz

3. Como criar um arquivo bz2

bzip2 bzip logoArquivos bz2, são arquivos bzip2 – um compressor de dados que usa o algoritmo Burrows-Wheeler e pode reduzir o espaço ocupado por um arquivo em até 10% do seu volume original.
Em função da maior capacidade de compressão, eu recomendo usar sempre o bzip. A desvantagem do seu uso está na maior demora para comprimir ou descomprimir arquivos.
Veja como usar o bzip, no lugar do gzip, na compressão de arquivos tar:

tar -cvjf arquivos_temporarios.tar.bz2 temp/

Note que substituí a opção z por j, no exemplo acima. A extensão também foi alterada para bz2

A extensão dos arquivos

Antes de seguir, gostaria de falar rapidamente sobre as extensões dos arquivos.
Você é livre para escolher a extensão que quiser. O arquivo de saída, do exemplo anterior, poderia se chamar
 
temporarios.fofinhos – o conteúdo continuaria sendo exatamente o mesmo.
Mas o objetivo da extensão de um arquivo não é “ser fofa” ou bonita. Antes, ela deve ser informativa e ajudar os usuários a entender de que tipo se trata aquele arquivo, de forma que se possa usar o comando certo em relação a ele. Mais a frente, vamos ver que os comandos para descompressão dos arquivos variam em função de ter sido usado bzip ou gzip na sua compressão.

Extensões comuns ao usar o tar

Já que estamos falando no assunto, há alguns padrões bastante difundidos:

  • arquivos tar, comprimidos com gzip, usam extensões .tar.gz ou .tgz
  • arquivos tar, comprimidos com bzip, usam predominantemente extensões .tar.bz ou .tbz

4. Como extrair arquivos tar

Para extrair o conteúdo de um arquivo tar, usamos a opção -x. Veja como funciona:

tar -xvf icones.tar

Se o arquivo estiver comprimido com o gzip:

tar -xvfz icones.tar.gz

Se estiver comprimido com bzip2:

tar -xvfj icones.tar.bz

Nota: O arquivo será sempre descomprimido no diretório atual. Use o comando pwd, caso não saiba em que diretório você se encontra.
Se quiser indicar outro diretório para descompactar o arquivo, use a opção
 
-C acompanhada do diretório de destino. No exemplo abaixo, vou direcionar a extração do conteúdo do arquivoicones.tar.bz pro diretório ~/meus_icones/:

tar -xvfj icones.tar.bz -C ~/meus_icones/

Notou que usei a opção -C antes do diretório destino?

5. Como listar o conteúdo de um arquivo tar

A opção -t é a que permite listar o conteúdo de arquivos tar. Veja como funciona:

tar -tvf icones.tar
drwxr-xr-x root/root         0 2013-11-19 01:22 opt/icons/
-rw-r--r-- root/root     68458 2013-11-13 00:42 komodo128.png
-rw-r--r-- root/root     12053 2013-11-13 00:42 komodo48.png
-rw-r--r-- root/root      2349 2013-11-13 00:42 komodo16.xpm
-rw-r--r-- root/root     87697 2013-11-13 00:42 komodo128.xpm

Como listar o conteúdo de arquivos tar.gz ou tar.bz

Nestes casos o comando permanece o mesmo. Tome apenas o cuidado de indicar corretamente os nomes dos arquivos cujo conteúdo você deseja listar.
Para listar um arquivo .tar.gz:

tar -tvf icones.tar.gz

Para listar um arquivo .tar.bz:

tar -tvf icones.tar.bz

6. Como extrair apenas um arquivo de dentro do arquivo tar

Neste exemplo, vou extrair o arquivo komodo128.png de dentro do arquivo icones.tar:

tar -xvf icones.tar komodo128.png

Para remover um arquivo com o mesmo nome de dentro de um arquivo tar.gz, acrescente a opção-z:

tar -zxvf icones.tar.gz komodo128.png

Se o arquivo comprimido for um tar.bz, use a opção -j:

tar -jxvf icones.tar.bz komodo128.png

Como extrair vários arquivos de um arquivo tar, tar.gz ou tar.bz

Neste caso, listamos os diversos arquivos, usando aspas. Observe os exemplos:

tar -xvf icones.tar "komodo128.png" "komodo64.png"
tar -zxvf icones.tar.gz "komodo128.png" "komodo64.png"
tar -jxvf icones.tar.bz "komodo128.png" "komodo64.png"

7. Como extrair vários arquivos de um arquivo .tar, .tar.gz ou .tar.bz usando coringas

Através de coringas, podemos indicar um grupo de arquivos sobre o qual desejamos efetuar uma ação. Vou mostrar como extrair um grupo separado de arquivos de dentro de arquivo tar, tar.gz e tar.bz com o uso de coringas, ainda usando o exemplo do tópico anterior:

tar -xvf icones.tar --wildcards *.xpm
tar -zxvf icones.tar.gz --wildcards *.xpm
tar -jxvf icones.tar.bz --wildcards *.xpm

8. Como adicionar arquivos ou diretórios a arquivos tar já existentes

Esta possibilidade é especialmente útil para quem deseja acrescentar mais arquivos ou diretórios a um arquivo tar de backup preexistente.
No exemplo que segue, vou acrescentar o arquivo
 
komodo32b.png ao arquivo tareado icones.tar. Para isto, vou usar a opção -r (append):

tar -rvf icones.tar komodo32b.png

Ou um diretório inteiro:

tar -rvf backup-sql-2014-15-02.tar sql/

Como adicionar arquivos ou diretórios a arquivos tar.gz ou tar.bz

Neste caso, a solução é recriar o arquivo, já incluindo estes novos na sua nova bola tar – o tar não tem como acrescentar arquivos a arquivos tar compactados com bzip ou gzip.

9. Como verificar arquivos tar

Arquivos de backup precisam ser checados sempre. Seria desolador, após um desastre (toc, toc, toc), descobrir que os backups não funcionam. Evite isto: verifique sempre os seus backups.
Novamente, não é possível aplicar a solução a arquivos tar.gz e tar.bz – qualquer que seja a extensão, arquivos compactados, seja com bzip ou gzip.
Por isto, os scripts de backup, costumam tarear primeiro os arquivos, verificá-los e, se tudo estiver certo, compactá-los.
Veja um exemplo de verificação, com o seu resultado:

tar -cvWf backup-2014-02-11.tar

Conclusão

Para concluir, segue uma pequena tabela com as opções abordadas neste texto, para ajudar a lembrar;

  • c — para criar um arquivo do tipo arquivo;
  • x — para extrair arquivos de dentro do arquivo tar
  • v — mostra o processo na tela. A opção -vv exibe mais detalhes ainda;
  • f — determina o nome do arquivo tar;
  • t — exibe o conteúdo;
  • j — compacta ou descompacta os arquivos via bzip2
  • z — compacta ou descompacta os arquivos via gzip;
  • r — adiciona arquivos ao tar;
  • W — verifica a integridade do arquivo tar;
  • wildcards — permite trabalhar com coringas.

Por enquanto, é só! Espero que este breve tutorial tenha sido suficiente para sanar suas dúvidas. Use o man tar no terminal para ver outras opções de uso do comando tar e, caso eu tenha esquecido alguma coisa, no texto, por favor comente ali embaixo. E não esqueça de compartilhar com os amigos – esta é a melhor forma de agradecer.

quarta-feira, 5 de fevereiro de 2014

Instalação apache + php + mysl + glpi +ocs + nagios em CentOS 6.0

Começamos pela instalação do sistema operativo CentOS 6.0.

Após a instalação procedemos à configuração da rede

Começamos por editar o ficheiro /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR="00:0C:29:2C:8B:B0"
NM_CONTROLLED="yes"
ONBOOT="yes"


#novo nuno
BOOTPROTO=static
#BOOTPROTO=dhcp
IPADDR=192.168.1.181
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
TYPE=Ethernet
#

 
Editamos também o /etc/resolv.conf  e acrescentamos os servidores de DNS
nameserver 192.168.1.5
nameserver 192.168.1.230
Reiniciamos o serviço de rede:

# /etc/init.d/network restart

De seguida procedemos à atualização do sistema através do yum

# yum -y clean all
# yum -y check-update
# yum -y update


Adicionamos  um novo repositório EPEL que significa: Extra Packages for Enterprise Linux
E contém softwares 100% livres, criados pela comunidade do Projeto Fedora.
Para adicionar o repositório digite:
Para 32 bits:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Procedemos à atualização do sistema através do yum

# yum -y update

Instalamos o ntsysv que permite de forma mais fácil desligar e ligar serviços

# yum install ntsysv

APACHE

# yum install httpd

Agora vamos configurar o Apache.
Primeiro inicie o Apache:

# service httpd start

Se tivermos o erro “httpd: Could not reliably determine the server's fully qualified domain name…” ao iniciarmos o Apache, editamos o arquivo:

# vi /etc/httpd/conf/httpd.conf

e retiramos o comentário “#” da variável ServerName e adicionamos o nome por exemplo “GPI”

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
ServerName GPI


Agora vamos deixar configurado para que no boot da maquina o apache seja iniciado, para tal use o comando:

# ntsysv

Depois disso selecione a opção:
[*] httpd

Se não conseguir acessar o IP do servidor via browser, editamos o arquivo:
# /etc/sysconfig/iptables

E adicione a seguinte linha:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

E depois rode o comando:

# iptables-restore /etc/sysconfig/iptables

E pronto, vai conseguir acessar e por aqui encerramos a configuração do apache.

PHP


Vamos agora instalar o php:
# yum -y install php php-cli php-common php-devel php-gd php-imap php-ldap php-mbstring php-mcrypt php-mhash php-mysql php-ncurses php-odbc php-pear php-xml php-xmlrpc


De seguida criamos o ficheiro info.php na directoria /var/www/html/ com o a seguinte informação:  <? phpinfo(); ?>


Podemos correr o seguinte comando para criar o arquivo phpinfo para testar o PHP:
# echo "<?php phpinfo(); ?>" > /var/www/html/info.php


Então acesse o endereço: http://ip-do-servidor/info.php

MYSQL

Para instalar o my-sql vamos corrrer o comando:

# yum -y install mysql-server

Agora vamos configurar o MySQL.


# service mysqld start


Agora vamos deixar configurado para que no boot da maquina o apache seja iniciado, para tal use o comando:

# ntsysv

Depois disso selecione a opção:
[*] mysqld


Com isso ele já faz todo o procedimento de criar as tabelas, dar permissão e tudo mais. Agora é preciso definir uma senha para o root, faremos da seguinte forma:
# /usr/bin/mysqladmin -u root password 'mysqlpass'
Prontinho, MySQL configurado e com a senha definida. Para testar, faça:
# mysql -u root -p
Insira a senha, se entrar é porque está ok.


Por vezes pode surgir o seguinte erro


"Another MySQL daemon already running with the same unix socket."

Isto acontece por um indevido encerramento da máquina. O serviço do mysql não foi encerrado devidamente.


No CentOS podemos corrigir o problema eliminado ou movendo o ficheiro mysql.sock


# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
e reiniciamos o serviço
# service mysqld start


PHPMyAdmin


Agora vamos instalar o phpMyAdmin:
# yum install phpmyadmin


Agora edite o arquivo config.inc.php da seguinte forma: 

# vi /usr/share/phpmyadmin/config.inc.php 

E altere a variável: 

$cfg['blowfish_secret'] = ''; 

Para algo semelhante a isso: 


$cfg['blowfish_secret'] = 'sdfakdEW234dswfesDfescVcvxDefsddd';

Podendo ser qualquer sequência de letras e números. 
Agora edite o arquivo /etc/httpd/conf.d/phpMyAdmin.conf e deixe ele da seguinte forma: 


#
# Web application to manage MySQL
#


<Directory "/usr/share/phpmyadmin">
  Order Deny,Allow
#  Deny from all
  Allow from all
</Directory>

<Directory "/usr/share/phpmyadmin/setup">
Order Deny,Allow
#Deny from all


Dessa forma todos poderão acessar o phpmyadmin. Caso queira deixar liberado apenas para um ip. Descomente o Deny from all e altere o Allow para "Allow from ip-desejado" e daí apenas esse ip terá acesso ao phpmyadmin. 
Depois disso reinicie o Apache: 

# service httpd restart 

E agora vamos acessar o phpmyadmin: http://ip-do-servidor/phpmyadmin 
Para configurar o phpMyAdmin através de um wizard acedemos a http://ip-do-servidor/phpMyAdmin/setup
E pronto, seu phpmyadmin está instalado e configurado.