#/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