User Tools

Site Tools


application_specific_backups:trac

http://trac.edgewall.org/ : Wiki & Bugtracking
Due to some circumstances on our Debian server with multiple (versions of) Trac installations I had to adapt it a bit, but the basis is Trac-backup as found on Google Code.

I call the first script from Bacula.

#!/bin/sh
# slightly adapted version to the one supplied on the wiki
# it makes use of an altered trac-admin /usr/bin/trac-adminconsole
# trac-adminconsole is an adapted version of trac-admin from Trac Debian package 0.10.3-1etch3
# to accomodate for the usage of the manually installed /usr/local/src/Trac-0.11rc1
# adjustment: trac.scripts.admin to trac.admin.console
/etc/bacula/extra-scripts2/trac-backup  /home/system/trac /home/storage/backupdump/trac

This script executes the next one with the correct parameters.
I adapted that script to use an adjusted version of the trac-admin script as that needed some editing to work with the correct version of Trac on our server. So you probably want to stick to the default “trac-admin”

#!/bin/bash

# OZ:
#export PYTHONPATH=/usr/lib/python2.4:/usr/lib/python2.4/site-packages
TRACADMIN=/usr/bin/trac-adminconsole

function show_usage() {
    printf "usage: %s [ -d ] tracroot_dir destination_dir\n" \
        $( basename $0 ) >&2
    echo "(try the -d option if trac-admin complains about mkdir)"
}

CREATE_DESTINATION=1
while getopts 'd' OPTION
do
    case $OPTION in
        d) CREATE_DESTINATION=0;;
        ?) show_usage
           exit 1
           ;;
    esac
done
shift $((OPTIND - 1))

TRAC_ROOT=$1
if [ -z $TRAC_ROOT ]; then
    show_usage
    exit 2
fi
if [ ! -d $TRAC_ROOT ]; then
    echo "directory '$TRAC_ROOT' does not exist"
    exit 4
fi
TRAC_BAC_ROOT=$2
if [ -z $TRAC_BAC_ROOT ]; then
    show_usage
    exit 2
fi

TODAY=$( date +%Y%m%d%H%M%S )
if [ $CREATE_DESTINATION -eq 1 ]; then
    mkdir -p $TRAC_BAC_ROOT/$TODAY
fi

for i in $TRAC_ROOT/*
do
    DEST=$TRAC_BAC_ROOT/$TODAY/$( basename $i )
    DEST_TARGZ=${DEST}.tar.gz
    $TRACADMIN $i hotcopy $DEST
    tar czf $DEST_TARGZ $DEST
    rm -rf $DEST
done

For sake of completeness hereby the trac-adminconsole script:

#!/usr/bin/python
# -*- coding: iso8859-1 -*-
__author__ = 'Daniel Lundin <daniel@edgewall.com>, Jonas Borgstr<F6>m <jonas@edgewall.com>'
__copyright__ = 'Copyright (c) 2005 Edgewall Software'
__license__ = """
 Copyright (C) 2003, 2004, 2005 Edgewall Software
 Copyright (C) 2003, 2004 Jonas Borgstr<F6>m <jonas@edgewall.com>
 Copyright (C) 2003, 2004 Daniel Lundin <daniel@edgewall.com>
 All rights reserved.

 This software is licensed as described in the file COPYING, which
 you should have received as part of this distribution. The terms
 are also available at http://trac.edgewall.org/wiki/TracLicense.

 This software consists of voluntary contributions made by many
 individuals. For the exact contribution history, see the revision
 history and logs, available at http://trac.edgewall.org/log/."""

import sys

from trac.admin.console import run
sys.exit(run(sys.argv[1:]))
application_specific_backups/trac.txt · Last modified: 2009/09/08 13:24 by olaf