Backup Incremental

1. Backup Incremental

Jorge Visentini
jorgevisentini

(usa CentOS)

Enviado em 23/01/2014 - 18:10h

Pessoal, boa tarde.

Estou tentando implementar um backup incremental com rsync aqui no meu servidor de dados.

Peguei vários scripts na internet e adaptei um pouco de cada para criar um que funcione aqui.

Bom, ele está funcionando para o que foi feito, mas com um detalhe. Como ele é incremental, eu pensei que ele iria copiar apenas os arquivos alterados após a última data do backup. Mas o que acontece é que ele sempre faz uma cópia full do compartilhamento todo (em torno de 150GB), depois ele sincroniza.

Não teria um forma de ele comparar e só copiar os arquivos com data de criação/alteração posterior ao último backup?

Segue abaixo o meu script, ele está funcionando, então se algum quiser usa-lo, tudo bem.



##################################################
#!/bin/bash
#
## BACKUP INCREMENTAL COM RSYNC
##
## POR VISENTINI
##
## 16/01/14
##
## RSYNC - OPCOES USADAS
## a - (--archive) - Modo arquivo. Igual -rlptgoD (no -H,-A,-X). Faz com que todas as permissoes e atributos sejam mantidos
## u - (--update) - Pula arquivos recentes
## v - (--verbose) - Mosta o que esta sendo sincronizado
##################################################

DATA=`date +%d"."%m"."%y`
LOCALDOBACKUP="/home/backups/incremental"
ORIGEMDOBACKUP="/home/compartilhamentos"
LOG="${LOCALDOBACKUP}/$04/10/2005.log"
BACKUPATUAL="${LOCALDOBACKUP}/$04/10/2005"
VALIDADE=4 # DEIXA APENAS OS ULTIMOS 5 DIAS

echo "########## INICIANDO BACKUP INCREMENTAL EM $04/10/2005 ##########" > ${LOG}

## CRIANDO DIRETORIO ATUAL COM DATA AUTAL
if [ -e ${LOCALDOBACKUP}/ultimobackup ]; then
BACKUPANTERIOR=`cat ${LOCALDOBACKUP}/ultimobackup`;

if [ -d ${BACKUPANTERIOR} ]; then
echo "########## BACKUP ANTERIOR ENCONTRADO, COPIANDO ARQUIVOS..... ##########" >> ${LOG}
cp -Rf ${BACKUPANTERIOR} ${BACKUPATUAL} >> ${LOG} 2>&1
fi

## CONDICAO DE EXISTENCIA NO DIRETORIO ANTERIOR
else
echo "########## DIRETORIO DE BACKUP NAO EXISTENTE, CRIANDO DIRETORIO..... ##########" >> ${LOG}
mkdir ${BACKUPATUAL} >> ${LOG} 2>&1
fi


## EXECUTANDO BACKUP
for DIRETORIO in ${ORIGEMDOBACKUP}; do
echo "########## INICIANDO BACKUP DE ${DIRETORIO} ##########" >> ${LOG}
rsync -auv --progress --stats --delete ${DIRETORIO} ${BACKUPATUAL} >> ${LOG} 2>&1
done

## REGISTRANDO DATA DO BACKUP ATUAL
echo ${BACKUPATUAL} > ${LOCALDOBACKUP}/ultimobackup

echo "########## FIM DO BACKUP DE ${DIRETORIO} ##########" >> ${LOG}


## VERIFICANDO A VALIDADE DO BACKUP E APAGANDO OS MAIS ANTIGOS
for DIRETORIO in `find ${LOCALDOBACKUP} -maxdepth 1 -type d -mtime +${VALIDADE}`; do
echo "########## APAGANDO BACKUP FORA DA VALIDADE: ${DIRETORIO} ##########" >> ${LOG}
rm -rf ${DIRETORIO} >> ${LOG} 2>&1
done


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts