Backup de Servidor

Iniciado por floating, 05 de Abril de 2006, 09:18

tópico anterior - próximo tópico

floating

Pessoal preciso de uma ajuda de vc's.
Preciso fazer backup semanais de 7 sites diferentes, portanto, farei 1 por dia, o problema é que isso consome um tempo precioso do meu trabalho e eu gostaria de usar alguma ferramenta que eu pudesse programar (agendar) esses backups em uma máquina Ubuntu.
Alguém tem alguma dica??

[]'s
ATHLON-XP 2.8; 1GB RAM; ASUS A7V600X; 80GB SATA (Maxtor); 40GB ATA (Samsung); GEFORCE 128MB (FX-5200); GENIUS 5.1;

Alysson Neto

Paara isso você pode usar o cron você pode usa-lo editando o arquivo crontab, no /etc/crontab, o contrab trabalha da seguinte maneira:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

Minutos: informe números de 0 a 59;
Horas: informe números de 0 a 23;
Dias do mês: informe números de 0 a 31;
Mês: informe números de 1 a 12; (Janeiro a Dezembro)
Dias da semana: informe números de 0 a 7; (Domingo a Sábado)
Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);
Comando: a tarefa que deve ser executada.

O uso de * no lugar de um desse valores faz com que a tarefa seja executada sempre. Se no campo dos dias do mês você colocar o * essa tarefa sera executada todos os dias do mês
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

edureis

Considerando que o root tá desabilitado por padrão, como faria para criar um script para que logado como um usuário comum, seja possível fazer cópia de arquivos que não tem permissão para fazer, ou até mesmo copiar para pastas compartilhadas na rede onde seria necessário sua authenticação. Um detalhe é que se tiver que usar o sudo o script não ficaria automátizado, porque pediria senha. Como fazer esse script para um usuário comum executar tarefas de root, automáticamente sem pedir authenticação.

Será que é querer demais, rsrsrs.

[],

Alysson Neto

Cara falando com um camarada meu, pra em ajudar o bolar esse script (ele manja pacas de shell) ele me lembro de algo logo de cara, que deixei passar. Esse script do jeito que tu quer pode ser um problema de segurança, porque tua senha vai ter que ficar em um arquivo (o pŕoprio script), com isso qualquer um que abrir ele ou der um cat ou less vai poder ver sua senha
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

Alysson Neto

Falei com um conhecido do Parana ele adm redes linux numa empresa, ele vai me mandar na segunda o script de bkp que ele usa na empresa, ai te mando
"Eu rejeito sua realidade e substituo pela minha" Adam Savage,

edureis

maneiro eu já até tinha imaginado essa questão de segurança mesmo, mas fico aí no aguardo para ver como burlar essa situação, no mais agradeço, vai ter muita gente interessada nisso.

um abraço.

cypherbios

Olá,

Bom eu faço backup de alguns servidores Debian e Ubuntu, em todos eles uso um script que automatiza tudo. Para usá-lo, eu agendo no Cron como root.
Antes, basta você habilitar a conta de root, digitando:
$ sudo su
# passwd


E então cole este script num arquivo, backup.sh, por exemplo, agende ele para ser executado no cron digitando "crontab -e" como root, lá edite conforme indicado pelo n3t0, e no comando, coloque o caminho para o script.

O script abaixo grava em DVD o backup e ejeta a gaveta após o término, checa o md5sum para verificar se o backup foi realizado com sucesso, é um script bem completo. Eu também uso uma versão que envia email dizendo se o backup foi bem sucedido ou não, mas por hora acho que este já pode ajudar, não se esqueça de revisar todas as variáveis  para ver se correspondem com o que você precisa.

TMP_DIR=              Diretório para armazenar arquivos temporários como os md5sum
BACKUP_DIR=         Diretório a ser feito backup
BACKUP_DIR_GZ=   Diretório onde ficará o arquivo .tar.gz do backup
BACKUP_FILE_GZ=  Nome do arquivo de backup .tar.gz
ISO=                     Nome da imagem a ser gerada
DVD_DRIVE=           Drive de DVD
MOUNT_POINT=      Ponto de montagem do DVD

<------------- Início da cópia do script ---------------------->

# !/bin/bash -v
# Setando as variáveis necessárias:

TMP_DIR=/tmp/backup
BACKUP_DIR=/home/usuario
BACKUP_DIR_GZ=/home/backup
BACKUP_FILE_GZ=bkp-meus_arquivos.tar.gz
ISO=backup.iso
MD5_FILE=md5sum_backup
MD5_FILE_CD=md5sum_CD
DVD_DRIVE=/dev/hdb
MOUNT_POINT=/media/cdrom


# Variáveis de comando

MKISOFS=`which mkisofs`
GROWISOFS=`which growisofs`
RM=`which rm`
MKDIR=`which mkdir`
EJECT=`which eject`
MD5SUM=`which md5sum`
DVD_RW_FORMAT=`which dvd+rw-format`
MOUNT=`which mount`
UMOUNT=`which umount`
DIFF=`which diff`
ECHO=`which echo`
DATE=`which date`
CP=`which cp`
CUT=`which cut`
TAR=`which tar`


# Verificando se já existe uma imagem de backup e arquivos de MD5, se existir, apagar:

$ECHO "Removendo arquivos temporarios "
if [ -f $TMP_DIR/$ISO ]; then
       $RM -f $TMP_DIR/$ISO
fi

if [ -f $TMP_DIR/$MD5_FILE ]; then
       $RM -f $TMP_DIR/$MD5_FILE
fi

if [ -f $TMP_DIR/$MD5_FILE_CD ]; then
       $RM -f $TMP_DIR/$MD5_FILE_CD
fi


# Removendo pastas e arquivos, e criando ambiente de backup:

if [ -f $BACKUP_DIR_GZ ]; then
       $RM -fr $BACKUP_DIR_GZ

if [ -f $BACKUP_DIR_GZ ]; then
       $MKDIR $BACKUP_DIR_GZ
fi


$ECHO "Criando arquivos de backup (*.tar.gz)... "

# Criando o tar.gz dos arquivos:

$TAR -zcvf $BACKUP_DIR_GZ/$BACKUP_FILE_GZ $BACKUP_DIR


# Obtendo o MD5SUM do arquivo:

$ECHO "Criando MD5Sum para verificacao de integridade... "
$MD5SUM $BACKUP_DIR_GZ/$BACKUP_FILE_GZ | $CUT -f1 -d ' ' > $TMP_DIR/$MD5_FILE


# Gerando a imagem para realizar o backup:

$ECHO "Criando a imagem de CD (.iso)... "
$MKISOFS -o $TMP_DIR/$ISO -joliet-long -JrT $BACKUP_DIR_GZ/$BACKUP_FILE_GZ


# Formatando o DVD:

#$ECHO "Formatando o DVD-RW... "
#$DVD_RW_FORMAT -force $DVD_DRIVE


# Gravando a imagem no DVD:

#$ECHO "Gravando o CD... "
#$GROWISOFS -speed=2 -dvd-compat -Z $DVD_DRIVE=$TMP_DIR/$ISO


# Montando o DVD gravado para verificação:

#$MOUNT -o ro $DVD_DRIVE $MOUNT_POINT


# Verificando os MD5SUMs:

#$ECHO "Verificando a Integridade dos arquivos... "
#$MD5SUM $MOUNT_POINT/$BACKUP_FILE_GZ | $CUT -f1 -d ' ' > $TMP_DIR/$MD5_FILE_CD


#if $DIFF $TMP_DIR/$MD5_FILE $TMP_DIR/$MD5_FILE_CD; then
       $ECHO "O backup foi realizado com sucesso em " `$DATE`
       
#else
       $ECHO "O backup dos emails dos usuarios não foi realizado com sucesso !!! "
$ECHO "Favor verificar imediatamente !!! "
#fi


# Desmontando:

#$UMOUNT $MOUNT_POINT


# Ejetando:

#$EJECT $DVD_DRIVE


# Finalizando:

exit 0

<-------------- Término da cópia do script -------------------->


Tenho uma meia dúzia de modelos diferentes de scripts de backup, se esta não for o suficiente, tenho outros modelos.

Abraços
Rafael "CypherBIOS" Proença
http://www.cypherbios.org/blog
Desenvolvedor - APTonCD
Interessado em aprender mais sobre o Ubuntu em português? Comece Aqui

floating

Desculpem minha ausência, mas estava preso a um projeto e tive que deixar os backups para depois e continuava fazendo backups pelo ftp. :(
Bom achei excelente esse script Rafael, muitíssimo obrigado, porém eu pretendo fazer os backups em uma pasta no hd, como no script vc usa o dvd-r (DVD_DRIVE=  Drive de DVD )
eu mudaria o local para por exemplo:
DVD_DRIVE=  /var/www/backups/sites... ???

Mais uma vez agradeço a ajuda de todos, vocês são excelentes, estão de parabéns e espero aprender o bastante para poder auxiliar os novos usuários!!
ATHLON-XP 2.8; 1GB RAM; ASUS A7V600X; 80GB SATA (Maxtor); 40GB ATA (Samsung); GEFORCE 128MB (FX-5200); GENIUS 5.1;

rafasnn

Citação de: cypherbios online 09 de Abril de 2006, 19:25
<-------------- Término da cópia do script -------------------->


Tenho uma meia dúzia de modelos diferentes de scripts de backup, se esta não for o suficiente, tenho outros modelos.

Abraços

cypherbios,

muito bom esse script, eu preciso de algo um pouco diferente, meu backup seria de algumas pastas especificas dos programas da empresa e como o server fica em outra localidade e o administro a distancia a parte em que o script envia um email seria uma dadiva pra mim....  ;D se caso ainda o tiver e disponibiliza-lo ficaria grato!
Macbook Pro 2,33 4GB 250GB
iPhone 8GB

arlei

Citação de: rafasnn online 06 de Setembro de 2007, 20:20
Citação de: cypherbios online 09 de Abril de 2006, 19:25
<-------------- Término da cópia do script -------------------->


Tenho uma meia dúzia de modelos diferentes de scripts de backup, se esta não for o suficiente, tenho outros modelos.

Abraços

cypherbios,

muito bom esse script, eu preciso de algo um pouco diferente, meu backup seria de algumas pastas especificas dos programas da empresa e como o server fica em outra localidade e o administro a distancia a parte em que o script envia um email seria uma dadiva pra mim....  ;D se caso ainda o tiver e disponibiliza-lo ficaria grato!

Olá rafasn,

existe um programinha chamado SendEmail (não confundir com o Sendmail) muito simples usada para enviar mensagens de e-mail SMTP via linha de comando. Ele possui um sintaxe muito simples e vc pode armazenar as saídas do seu script em variáveis ou mesmo em arquivos de log e ao final enviar por e-mail com esta pequena aplicação (sim, ele aceita envio de anexos).

Para instalar:
sudo aptitude install sendemail

Segue abaixo um exemplo em que o SendEmail envia ao destinatário junto com a mensagem desejada o arquivo de log anexo armazenado na variável ${FILELOG}:

sendEmail -f remetente@dominio.com.br -t destinatario@dominio.com.br -u "ASSUNTO DESEJADO" -s localhost:25 -m "Corpo da mensagem." -a ${FILELOG}

Onde,

FILELOG="/var/log/meu_log_de_backup.log"

Nota: Vc pode usar qualquer outro SMTP server especificando o host (IP) e a porta no lugar do localhost.

T+
Arlei