Mostrando postagens com marcador Linux. Mostrar todas as postagens
Mostrando postagens com marcador Linux. Mostrar todas as postagens

quinta-feira, agosto 19, 2010

Backup full agendado em HD Externo no Ubuntu Server 10.04

image

Bom, vamos lá.

Cenário: Servidor instalado com Ubuntu 10.04 LTS Server, rede com máquinas Windows (Vista e Seven), no servidor rodando Samba como servidor de arquivos e gerenciador de impressão (Ainda com problemas para detectar os grupos secundários, mas funcionando na base da lista de usuários direto).

Problema: fazer o backup full dos arquivos do samba, agendado.

Comprei um case da Akasa, para conexão via USB, que pode receber HDs externos SATA 2,5” ou 3,5”, montei um HD de 2,5” de 160Gb, para ser o HD para guardar os backups, que era o meu antigo HD do notebook que foi trocado por outro de 750Gb, este HD está com sistema NTFS pois rodava Windows Vista, o novo agora roda Windows 7 Ultimate, nem me dei ao trabalho de formatar com ext3 ou outro sistema de unix, mantive o mesmo, só apaguei todos os dados do HD.

O case da Akasa é este aqui:

image

Akasa Duo Dock, ref: AK-IC008B-BKAM, custa por volta de R$ 130,00, suporta HDs de 2,5”e 3,5”, tem conexão eSata ou USB, funciona 100% no Ubuntu.

O bixinho é bão, viu?

 


   O processo é bem simples, conecta o Akasa via USB do servidor, ele reconhece automaticamente, aí é só descobrir onde que ele conectou, no meu servidor, conectou com /dev/sdc1 pois o servidor já tem 2 HDs de 500Gb.
   Para descobrir onde está o seu HD externo, basta digitar o comando fdisk –l:
# sudo fdisk –l

   Ele vai listar as unidades conectadas, e você poderá identificar o HD, aí é só montar o dito cujo, no meu caso eu decidi chamar de akasa mesmo, para saber que é o dock que está montado:
# sudo mount /mnt/akasa /dev/sdc1

  Ok, agora o HD externo será acessível sempre via /mnt/akasa, porém teremos um problema, teremos que verificar quando o HD externo estará montado, pois isso só vai ocorrer nos dias do backup, nos outros dias o HD estará armazenado fora da empresa, lógico, mas graças ao comando mountpoint podemos verificar quando o case estiver conectado, vamos agora fazer o script para rodar o backup periódicamente:

Obs.: procurei comentar o script para facilitar a compreensão.

-----------------------------------------------------------------------------
#/bin/sh

# Para conter a data do arquivo de backup que sera gerado
DTABKP=`date +%Y-%m-%d`
# Para conter o nome do mes para o arquivo de log - vamos fazer um log por mes
MESLOG=`date +%B`

# Diretorio que deve ser origem para o backup.
DIRORIGEM="/home/rede/ServPat"

# Arquivo para gravar o log do backup
ARQLOG="/var/log/backup/bkpServPat_log.$MESLOG"

# Verifica se o case esta montado no ponto definido, ou seja
#    se o HD externo esta conectado no case via usb

if mountpoint -q /mnt/akasa
then

# A sintaxe do TAR e : tar [parametros] [-f arquivo] [-C diretorio] [arquivos...].

#Parametros:

#    * -c - cria um novo arquivo tar;
#    * -M - cria, lista ou extrai um arquivo multivolume;
#    * -p - mantem as permissoes originais do(s) arquivo(s);
#    * -r - acrescenta arquivos a um arquivo tar;
#    * -t - exibe o conteudo de um arquivo tar;
#    * -v - exibe detalhes da operacao;
#    * -w - pede confirmacao antes de cada acao;
#    * -x - extrai arquivos de um arquivo tar;
#    * -z - comprime ou extrai arquivos tar resultante com o gzip;
#    * -j - comprime ou extrai arquivos tar resultante com o bz2;
#    * -f - especifica o arquivo tar a ser usado;
#    * -C - especifica o diretorio dos arquivos a serem armazenados.
     # Compacta a pasta da rede e joga para o diretorio do HD que esta no case USB
     tar -czvf /mnt/akasa/Backups/bkpServPat_$DTABKP.tar.gz $DIRORIGEM

    # Variavel para retorno das operacoes, para pegar algum erro
    RETORNO=$?

    # SE o retono de erro != 0, esta com erro

    if [ $RETORNO != "0" ]
           then
    # Grava o LOG com o codigo do Erro encontrado

      echo "================================================" >> $ARQLOG
      echo "            ********  E R R O ********" >> $ARQLOG
      echo "Erro na gravacao do backup da rede = $RETORNO" >> $ARQLOG
      echo `date` >> $ARQLOG
      echo "================================================" >> $ARQLOG

   else
      # Senão  esta sem erro
      # Grava no log informando que esta tudo OK
      echo "================================================" >> $ARQLOG
      echo "Backup da rede esta OK" >> $ARQLOG
      echo `date` >> $ARQLOG
      echo "================================================" >> $ARQLOG

   fi

fi

     Pronto, agora é só colocar o script no cron do Linux, e voilá, é sossegado.
      Não é um sistema de backup a prova de furacões e quedas de meteoros, mas é bem seguro.

Dica: Além do webmin (o meu preferido) para administrar o servidor remotamente, uso também o putty que permite um acesso direto ao terminal do server, baixe de http://www.putty.org .

terça-feira, abril 06, 2010

Administrando seu servidor Linux via webmin

webmin-blue

Ok, você decidiu montar um servidor para a sua empresa ou para a sua casa, para as tarefas comuns de um servidor, compartilhamento de arquivos, impressoras, banco de dados, servidor web, etc.

Eu particularmente prefiro uma interface amigável para administração, não tenho problemas com linha de comando, simplesmente encontro meios mais úteis para investir meu tempo, além do que, me é muito mais agradável uma interface amigável do que a linha de comando, que por longos anos me acompanhou na administração de servidores dos mais diferentes tipos e sabores de SO.
Aqui vamos ver como administrar o servidor Linux de maneira remota, via navegador internet, com interface amigável, bonita e poderosa, de forma que mesmo que você necessite de linha de comando, pode usar via o navegador.

Mãos à obra então:

Meu servidor foi montado com o Ubuntu Linux Server 9.10, e baseado neste é que faremos esta explicação.
Primeiro, infelizmente o webmin não vem nos repositórios padronizados da distribuição do Ubuntu Server, você terá que instalar o dito cujo, e usar a linha de comando para isso, mas é muito fácil, veja abaixo:

  1. Cheque se você tem todas as bibliotecas para rodar o webmin, para fazer isto, digite o comando abaixo no prompt de comando:
    sudo apt-get instala perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl
  2. É interessante você atualizar o repositório do APT:
    1. abra o arquivo de fontes de pacotes em /etc/apt/sources.list
    2. Adicione, no fim deste arquivo, as duas linhas a seguir:
      ## Repositório Debian Sarge do WebMin
      deb
      http://download.webmin.com/download/repository sarge contrib
  3. Atualize o APT, para isto digite o seguinte comando:
    sudo apt-get update

  4. Agora basta instalar o webmin, com o comando:
    sudo apt-get instala webmin
Depois de instalado o webmin estará disponível no diretório
/usr/share/webmin, os arquivos de configuração do webmin
junto com todos os módulos dele estarão em
/etc/webmin.

Pronto, para usar o webmin, basta digitar no seu
navegador:
https://<servidor>:10000
   10000 é a porta padrão de instalação do Webmin,
troque o <servidor> pelo nome do seu servidor
ou pelo endereço IP do mesmo.
Para acessar via internet, você deverá fazer um NAT no seu
roteador para direcionar as requisições na porta 10000 para o
servidor a ser administrado.
   Note que o protocolo padrão para acesso ao
webmin é HTTPS e não HTTP.
Nota: Quando você instalar o Ubuntu Server, o único editor de
textos que ele instala é o vi, que eu pessoalmente acho terrível,
desta maneira para editar o sources.list você pode usar o mcedit,
para instalar o mcedit, que é um editor bem melhor que o vi,
basta usar o apt-get, veja abaixo:
  sudo apt-get instala mc