Servidor RSYNC
Neste exemplo utiliza-se um servidor ubuntu 16.04 LTS mas esta configuração deve funcionar para qualquer outra distribuição Linux com as devidas alterações.Foi criado um utilizador designado utilizador.
0. Instalação
apt-get install rsync
É possível criar um local de trabalho, neste caso /srv/BACKUP
mkdir /srv/BACKUP
chown utilizador:utilizador -R /srv/BACKUP
1. Configuração
O ficheiro de configuração é /etc/rsyncd.conf e um exemplo simples:
uid = utilizador
gid = utilizador
socket options = SO_KEEPALIVE
[BACKUP]
path = /srv/BACKUP
comment = Backup [500GB]
read only = false
auth users = utilizador
Após a configuração é necessário ativar o modo de serviço (daemon) do rsync:
nano /etc/default/rsync
Deve descomentar-se a linha (remover o # no início):
RSYNC_ENABLE=true
Para arrancar o serviço:
service rsync start
As opções permitem a gestão básica: stop (parar), restart (reiniciar) e status (estado).
O reload não é necessário porque o rsync lê o ficheiro de configuração a cada nova ligação que recebe.
2. Testar o serviço
Para testar é possível recorrer a outra máquina que esteja na rede com o rsync instalado e executar:
rsync rsync://servidor
BACKUP Backup [500GB]
Ao aceder ao módulo de BACKUP irá pedir uma palavra-passe, que não foi definida na configuração inicial, e, por isso, irá falhar:
rsync rsync://servidor/BACKUP
Password:
@ERROR: auth failed on module BACKUP
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
Cliente para backups
Para que o cliente possa enviar os ficheiros automaticamente sem haver pedido de senhas, é necessário configurar o acesso ao servidor por SSH por chave, isto é sem ser necessário introduzir uma palavra-passe. Esta forma é mais segura e permite a automatização das tarefas de backup pretendidas.Neste caso é utilizada uma máquina cliente com o utilizador user que será o responsável pelo envio dos backups para o servidor.
0. Configuração do acesso por SSH com chave pública ao servidor
A criação das chaves no cliente com:
mkdir ~/.ssh/
ssh-keygen -t rsa
Copiar a chave criada para o servidor e habilitar o acesso SSH sem password para o utilizador do servidor:
ssh-copy-id utilizador@servidor
Testar para verificar se já não pede password com:
ssh utilizador@servidor
1. Script para Backups
Um script para automatizar os backups poderá ser o seguinte:
#!/bin/bash
# script by Mário Pinto @ 2016.07.19
# RSYNC SERVER - Complete URI for the server including protocol
SERVER="servidor"
USER="utilizador"
RSYNC_SERVER="$USER@$SERVER:/srv/BACKUP/"
COMMAND="rsync -qzar --delete"
# HOSTNAME and LOG_FILE
HOSTNAME=`hostname`
LOG_FILE=$HOSTNAME".log"
DATE=`date +%Y.%m.%d@%H:%M:%S`
START=`date +%s`
echo -e "HOST: $HOSTNAME\t $DATE\nBacking up to $RSYNC_SERVER$HOSTNAME" > $LOG_FILE
# Directories/Files to backup separated with a space ' '
BACKUP_DIRS="/home/user/DATA /home/user/ISO"
# Execute the backup for each directory/file specified
for i in $BACKUP_DIRS
do
echo -ne "\tBacking up $i... " >> $LOG_FILE
if $COMMAND $i $RSYNC_SERVER$HOSTNAME ; then
echo "OK" >> $LOG_FILE
else
echo "KO" >> $LOG_FILE
fi
done
END=`date +%s`
DURATION=$(( $END - $START ))
echo -e "Done in $DURATION seconds." >> $LOG_FILE
rsync -qraz $LOG_FILE $RSYNC_SERVER"logs/"
cat $LOG_FILE
rm $LOG_FILE
exit 0
Poderá ser guardado como ~/rBackup
Deverá ser colocado como executável:
chmod 755 ~/rBackup
E testado:
./rBackup
HOST: cliente 2016.07.19@13:00:35
Backing up to utilizador@servidor:/srv/BACKUP/cliente
Backing up /home/user/DATA... OK
Backing up /home/user/ISO... OK
Done in 4 seconds.
2. Automatização do Backup
Se tudo for automático, resta criar um cronjob para o script, por exemplo:
crontab -e
2 * * * nice /home/user/rBackup
Sem comentários:
Enviar um comentário