#/bin/bash
_help(){
cat << fim
Autor:
Ricardo Brito do Nascimento
Email:
britodfbr[at]gmail.com
Descrição:
Este script realiza o backup via repozo do plone versão 2.5.5 ou superior;
pode ser utilizado para realizar backups de versões anteriores,
entretanto não foi testado, e possivelmente será necessário
customização para funcionar adequadamente.
Além do backup realiza controle de retenção do backup, excluindo automaticamente
os arquivos antigos.
Variáveis de configuração:
DAYS - dias de retenção;
FILESTORAGEDIR - diretório de instalação;
BACKUPDIR - diretório que os backups serão mantidos;
REPOZO - plone 3.3.5 ou superior '"/opt/p335/${B}/bin/repozo"';
plone 2.5.5 '`find ${FILESTORAGEDIR} -name "*repozo*" -iwholename "*bin*"`'
EXCEPTION[n] - diretórios ou arquivos que terão validade ignorada;
Versão: 4
Execução:
$0; ou
$0 -h | --help | ?
fim
}
########### Variavéis de configuração ########
DAYS=2
FILESTORAGEDIR=/opt/p335/
HOSTNAME=$(/bin/hostname | /bin/awk -F. '{if (NR>0) { A=$1 } else { A=$NF }; print A}')
REPOZO=($(find $FILESTORAGEDIR -type f -iwholename "*bin*" -name "*repozo*" -print))
REMOTEHOST="192.168.22.2"
REMOTEDIR=/vol/zope_dmz
LOCALDIR=/storage
BACKUPDIR=$LOCALDIR/$HOSTNAME
EXCEPTION[0]=".snapshot"
EXCEPTION[1]="arquivosAnexos"
EXCEPTION[2]="none"
EXCEPTION[3]="none"
########### Versão de testes ################
#/bin/find /opt/p335/*/var/filestorage/ -type f -name "*.fs" -printf '%h %f\n'|while read a b; do A=/storage-bkp/; B=$(awk -F/ '{print $4}' <<< ${a}); C=${b%.fs}; mkdir -pv ${A}/${B}/${C}; /opt/p335/${B}/bin/repozo -BFvzf ${a}/${b} -r ${A}/${B}/${C}; done
#
#/bin/find /storage-bkp/ -type f -atime +2 |grep -v .snapshot|xargs rm -vf
########### Funções ################
_erro(){
cat << fim
opção inválida, consulte o help, com as opções --help ou, -h ou, ?.
fim
}
_verifyNFS(){
# Este script verifica o compartilhamento remoto, se não tiver ativo
# ele é montado
grep -Eo $REMOTEHOST /etc/mtab >> /dev/null
[ `echo $?` == "1" ] && mount $REMOTEHOST:$REMOTEDIR $LOCALDIR
mount
}
_repozoBackup(){
if [ ${#REPOZO[*]} -gt 1 ]; then
/bin/find $FILESTORAGEDIR -type f -iwholename "*var*" -name "*.fs" -printf '%h %f\n'|while read a b; do A=$BACKUPDIR; B=$(awk -F/ '{print $4"/"$5}' <<< ${a}); C=${b%.fs}; mkdir -pv ${A}/${B}/${C}; /opt/p335/${B}/bin/repozo -BFvzf ${a}/${b} -r ${A}/${B}/${C}; done
else
/bin/find $FILESTORAGEDIR -type f -iwholename "*var*" -name "*.fs" -printf '%h %f\n'|while read a b; do A=$BACKUPDIR; B=$(awk -F/ '{print $4"/"$5}' <<< ${a}); C=${b%.fs}; mkdir -pv ${A}/${B}/${C}; ${REPOZO} -BFvzf ${a}/${b} -r ${A}/${B}/${C}; done
fi
}
_removeOld(){
/bin/find $BACKUPDIR \( -ctime +${DAYS} -o -atime +${DAYS} -o -mtime +${DAYS} \)|grep -v ${EXCEPTION[0]}|grep -v ${EXCEPTION[1]}|grep -v ${EXCEPTION[2]}|grep -v ${EXCEPTION[3]} |xargs rm -vrf
}
_start(){
_erro;
#_repozoBackup
#_removeOld
}
_stop(){
_erro;
}
_restart(){
_erro
}
_status(){
_erro
}
case $1 in
start) _start;;
stop) _stop;;
status) _status;;
restart) _restart;;
-h|--help|?) _help;;
'') _verifyNFS;_repozoBackup;_removeOld;;
*) _erro ;;
esac
Add a code snippet to your website: www.paste.org