The Cella backup script is a Bash based wrapper around rsync, mysqldump and pg_dump.

Using these standard tools and a simple configuration file Cella provides a practical and simple method of backup.

Cella Installation

Cella is just a PHP script, w/o any dependencies on other frameworks. Each of the Actions that Cella can perform depends on an outside tool. For example, to do an rdiff based backup the rdiff-package must be installed.

Installation is to simply download the script to the target system and make it executable.

user@host # mkdir -p /opt/edoceo/cella/
user@host # cd /opt/edoceo/cella/
user@host # wget edoceo.com/bin/cella.sh
user@host # chmod 0755 cella.sh

Download: edoceo.com/bin/cella.sh

Cella Usage

Super Easy! Standard command format is cella.sh [option] <script>. Here are some examples.

Show Help

user@host # ./cella.sh

Show the Job List

user@host # ./cella.sh show

Run the Job List

user@host # ./cella.php pack

Run the Job List - debug/dry-run mode

user@host # ./cella.php -d pack

Show Archive List!

user@host # ./cella.php list

Do a few things (like in cron)

user@host # ./cella.php pack trim list

Cella Configuration

Cella scans the locations above for configuration files and loads each. Later files can/will over-write the data from the previous.

The files are plain ini style configurations. Section names are the titles of the backup job. The action, source and target parameters are required for all jobs.

# Cella Example Backup File
# :mode=shellscript:

# Cella defines variables and functions before calling this file
# This file is run just as any other shell script

#
# Can set almost any vars you want here
# We use special ones named like $_cella_*
base="/mnt/Raid/Cella/"

# Run the Functions
# Typically they are like $command $source $target

#
# rsnap local->local
rsnap_backup $base "/etc/" "etc/"

# rsnap remote->local
rsnap_backup $base "otherhost::/etc/" "otherhost/etc/"

# rsnap local->remote
rsnap_backup "/etc/" "otherhost::$base"

# rsnap a remote Windows computer to Here
mount -t cifs -o username=foo,password=bar //winhost/share /mnt/baz
rsnap_backup /mnt/baz "$base/winhost/"
umount /mnt/baz

#
# rsync local->local
rsync_backup "/etc/" "$base/etc/"

# rsync remote->local
rsync_backup "otherhost:/etc/" "$base/otherhost/etc/"

# rsync local->remote
rsync_backup "/etc/" "otherhost:$base"

#
# Subversion Backup
svn_backup   /var/svn/repos/  $base/svn/

#
# PostgreSQL Localhost, All Database (".")
pgsql_backup "." $base/pg.dump/ "pg_user" "pg_pass"

# Local Foo Database
pgsql_backup "/foo" $base/pg.dump/ "pg_user" "pg_pass"

# PostgreSQL Remote->Local, All Database (".")
pgsql_backup "otherhost/." $base/pg.dump/ "pg_user" "pg_pass"

# PostgreSQL Remote->Local, One Database
pgsql_backup "otherhost/database" $base/pg.dump/ "pg_user" "pg_pass"

# Run the Next Backup as Specific System User
cella_runas "postgres"
pgsql_backup "." $base/pg.dump/ "pg_user" "pg_pass"

# Make a Tarball
targz_backup "/etc" "$base/etc.tgz"

# Backup LDAP
slapd_backup "....." "$base/dump.ldif"

# Show Outputs After?
touch $base
date > $base/timestamp.chk

du -sh $base

See Also