zope_pack
script to automate packing and backing up
Size 1.7 kB - File type text/x-shFile contents
#!/bin/bash
# script to pack and back up ZODB
# Author: Alexey Filin
# message about failure
export mess=""
# exit code of failed command
export exit_code=0
# mail address to send message on failure
export admin_address="root@localhost"
# url to pack ZODB
export packing_url="http://localhost:8080/Control_Panel/Database/manage_pack?days:float=7"
# ZODB directory
export zodb_dir="/zope_root_dir/var"
# backup host
export backup_host="myfileserver"
# backup directory
export backup_dir="/archives/zope/ZODB"
function mailAboutFailure {
    if [ "${mess}" != "" ]; then
        mail -s "ERROR: failed to pack and back up ZODB"\
            "${admin_address}" <<EOF
${mess}
EOF
    fi
}
#############################################################################
# check and set environment
comm="su zope"
# 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}
}
su zope -s /bin/sh -c 'ls ${backup_dir}' || {
    exit_code=$?
    mess="\`ls ${backup_dir}' failed"
    mailAboutFailure
    exit ${exit_code}
}
#############################################################################
# pack ZODB
su zope -s /bin/sh -c 'wget -O /dev/null --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" "${packing_url}"' || {
    exit_code=$?
    mess="packing failed"
    mailAboutFailure
    exit ${exit_code}
}
# back up ZODB
export suff=`date +%A`
su zope -s /bin/sh -c 'cp ${zodb_dir}/Data.fs.old ${backup_dir}/Data.fs.$suff' || {
    exit_code=$?
    mess="backing up failed"
    mailAboutFailure
    exit ${exit_code}
}
        

