#/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ão3 ou superior;
       pode ser utilizado para realizar 
       backups de versões anteriores
       mas 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 que contém .fs;
    BACKUPDIR - diretório que os backups 
     serão mantidos;
    EXCEPTION[n] - diretórios ou arquivos 
     que terão validade ignorada;

Execução: 
    $0; ou
    $0 -h | --help | ?
fim
}
########### Variavéis de configuração ########
DAYS=2
FILESTORAGEDIR=/opt/p335/ambienteProd/*/var/filestorage/
BACKUPDIR=/storage-bkp
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
}
_repozoBackup(){
/bin/find $FILESTORAGEDIR -type f -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
}
_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(){
_repozoBackup
_removeOld
}
_stop(){
_erro;
}
_restart(){
_erro
}
_status(){
_erro
}

case $1 in
        start) _erro;;
        stop) _stop;;
        status) _status;;
        restart) _restart;;
        -h|--help|?) _help;;
        '') _start;;
        *) _erro ;;
esac

Add a code snippet to your website: www.paste.org