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

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

  • Archives MySQL or PostgreSQL Databases/Servers
  • Push/Pull Backup Methods
  • Store Off-site in Amazon S3
  • Connect to DAV, EncFS, FTP, Samba and others

Cella Installation

  • rsync and rdiff-backup
  • mysql or mysql-client
  • postgresql or postgresql-client
  • Suggested: openssh
  • Optional: Samba and
    FUSE + ftpfs, s3fs, davfs, etc

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

  • /etc/edoceo/cella.ini
  • ~/.edoceo/cella.ini
  • [directory of cella.php]/cella.ini
  • [current directory]/cella.ini

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 Configuration 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

#
# rdiff local->local
rdiff_backup "/etc/" "$base/etc/"

# rdiff remote->local
rdiff_backup "otherhost::/etc/" "$base/otherhost/etc/"

# rdiff local->remote
rdiff_backup "/etc/" "otherhost::$base"

# rdiff a remote Windows computer to Here
mount -t cifs -o username=foo,password=bar //winhost/share /mnt/baz
rdiff_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

Add Comment or Note