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