você está aqui: Home → Arquivo de Mensagens
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 14 de Dezembro de 2004
A maioria dos administradores de redes precisam utilizar alguma ferramenta de backup. No meu caso eu utilizo o comando tar para concatenar, juntamente com o bzip2 para compactar os arquivos e o ssh para fazer a transferência dos mesmos remotamente.
Este trio pode ser utilizado de várias formas, mas prefiro utilizar todos em uma linha única de comando.
*Apesar da facilidade tem que se levar em consideração que a autenticação por chaves assimétricas esteja configurada (sem utilização de senha) e funcionando no servidor que irá receber os backups.*
O macete é o seguinte: O comando tar tem uma opção que vc. pode utilizar para especificar um shell remoto para ele ( --rsh-command ), com isto ao invés de utilizarmos um shell inseguro como o rsh, usamos o ssh.
Vamos lá então:
Para compactar e enviar o arquivo para uma máquina remota:
tar cjvf usuario@servidor.com.ssh:local_onde_guardara_o_backup.tar.bz2 /home --rsh-command=/usr/bin/ssh
pode-se aprimorar ainda mais isso, utilizando a opção —include-files e --exclude-files do tar, para um backup mais enxuto, digamos assim.
Veja um script de exemplo:
#!/bin/bash ############################################################################# # Script bkp.sh # # Forma de execução: # # $PATH/bkp.sh [USER] [HOST] [INCLUDE-FILE] [ABSOLUTE PATH SSH] & 2>&-# # # # Breve descrição: # # Este script efetua o backup dos diretórios existentes no arquivo # # [INCLUDE-FILE] para a o usuário e máquina especificado em [USER] # # e [HOST] respectivamente. # # Aceita-se ainda o parâmetro [ABSOLUTE PATH SSH]. Caso ele não seja especi-# # ficado assume-se que o arquivo seja "usr/bin/ssh" # # # # OBS: Este script usa autenticação por chaves públicas SSH sem senha # # # # by Edson Flávio de Souza edson.flavio@ufpr.br # # versão 1.0 # ############################################################################# #set -x ###Usuário remoto que será usado para receber o backup USER=${1-usuario} ###Host remoto que será usado para receber o backup HOST=${2-host} ###Nome do arquivo remoto que será gerado o backup FILENAME=backup.$HOST.$(date +%d%m%Y).bkp ###Nome do arquivo onde fica a relação de diretórios a serem "backupeados" INCLUDE=${3:-include.txt} ###Local onde fica o binário do ssh SSH=${4:-/usr/bin/ssh} ###Local onde fica o binário do tar TAR=/bin/tar ###Parâmetros a serem usados para compactação com o tar (o "c" e o "f" são essenciais) ###Aqui estou usando o bzip opção "j" TARPARM=cjf ###Endereço para onde deve ser enviado e-mail's com erro EMAIL=root@localhot ### Efetuando o Backup $TAR $TARPARM $USER@$HOST:$FILENAME --rsh-command=$SSH -T $INCLUDE 2>&- if [ $? -ne 0 ]; then { mail -s "Erro no Backup da máquina $HOST em $(date +%d/%m/%Y)" $EMAIL exit 1 }; fi ### Removendo arquivos de backups antigos $SSH $USER@$HOST '(cd ~/backups/; DATA=``date --date="15 days ago" +%d%m%Y``; rm *.$DATA.bkp)'; if [ $? -ne 0 ]; then { mail -s "Erro remoção arq. ant. host $HOST em $(date +%d/%m/%Y)" $EMAIL exit 1 }; fi