Actions sur le document
Backup et pack du Data.fs Zope classique
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...

