De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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