Outils personnels
Vous êtes ici : Accueil Blog Backup et pack du Data.fs Zope classique
Navigation
 
Actions sur le document

Backup et pack du Data.fs Zope classique

Filed Under:

Backup et pack du Data.fs d'un Zope classique sans ZEO, automatique via cron et script bash

Un première méthode consiste à jouer avec l'url suivante

http://localhost:14380/Control_Panel/Database/manage_pack?days:float=3

Le problème est qu'il faut lui passer les identifiants en clair.

Pour contourner ce problème, la méthode recommandé est d'utiliser uuencode.

Sous FC4, le package a utilisé est sharutils

# yum install sharutils

Ensuite nous allons encoder nos identifiants. On lance la commande suivante :

# uuencode -m /dev/stdout

Le shell nous affiche :

begin-base64 664 /dev/stdout

Entrer votre identifiant et mot de passe comme suit :

id:password

Appuyer 3 fois avec ctrl+D, s'affiche alors dans mon cas :

id:passwaorda3dhMjk6c2FwaGlyYQ==
====
Votre identifiant a utiliser est donc a3dhMjk6c2FwaGlyYQ==

Nous pouvons à présent écrire le script zope_pack.sh

#!/bin/bash

# Script to pack and back up ZODB
# Author: Didier CAROFF

# User/Pass
export myUserId="a3dhMjk6c2FwaGlyYQ=="
# message about failure
export mess=""
# message for mail
export mail_message="ZODB BZHNetwork"
# exit code of failed command
export exit_code=0
# mail address to send message on failure
export admin_address="djkwa29@gmail.com slebayon@zindep.com stephane.pean@gmail.com"
# url to pack ZODB
export packing_url="http://localhost:14380/Control_Panel/Database/manage_pack?days:float=3"
# ZODB directory
export zodb_dir="/home/kwa29/Zope-2.9.3/z14380/var"
# backup host
export backup_host="localhost"
# backup directory
export backup_dir="/home/kwa29/Backup"

function mailAboutFailure {
    if [ "${mess}" != "" ]; then
        mail -s "ERROR: failed to pack and back up ZODB : ${mail_message}"\
            "${admin_address}" <<EOF
${mess}
EOF
    fi
}

function mailAboutSuccess {
    if [ "${mess}" == "" ]; then
        mail -s "SUCCESS: success to pack and back up ZODB : ${mail_message}"\
            "${admin_address}" <<EOF
La sauvegarde et le pack du site BZHNetwork.com a ete un succes. Merci Stephane et Simon...
EOF
    fi
}

#############################################################################
# check and set environment

#comm="su kwa29"

# redirrect stdin/stdout to log file
exec > /dev/null || {
    exit_code=$?
    mess="\`exec > /dev/null' failed"
    mailAboutFailure
    exit ${exit_code}
}

comm="ping -c 3 -w 100 ${backup_host}"
${comm} || {
    exit_code=$?
    mess="\`${comm}' failed"
    mailAboutFailure
    exit ${exit_code}
}

/bin/sh -c 'ls ${backup_dir}' || {
    exit_code=$?
    mess="\`ls ${backup_dir}' failed"
    mailAboutFailure
    exit ${exit_code}
}


#############################################################################
# Pack ZODB
/bin/sh -c 'wget -O /dev/null --header="Authorization: Basic ${myUserId}" "${packing_url}"' || {
    exit_code=$?
    mess="Packing failed"
    mailAboutFailure
    exit ${exit_code}
}


# Backup ZODB
export suff=`date +%m%Y`
/bin/sh -c 'cp ${zodb_dir}/Data.fs.old ${backup_dir}/Data.fs.$suff' || {
    exit_code=$?
    mess="Backing up failed"
    mailAboutFailure
    exit ${exit_code}
}

mailAboutSuccess

Et voilà on fini avec le cron et c'est magique...