ZFS Backup Server: Overview

With Solaris 10's ZFS and a handful of free tools, you can easily build a simple disk based backup server without having to spend many thousands of dollars on software like Legato Networker or Veritas NetBackup, or having to deal with figuring out the difficult configurations of large open source backup software packages. You can easily back up any UNIX host (Solaris, Linux, HPUX, etc) as long as you have rsh or ssh type access.

For our setup, we simply attached a 2 terabyte array to our backup server (our nightlys are about 150GB) and store all of our data on disk. Depending on your backup needs, disk space obviously becomes a concern, but unless you're backing up a few hundred gigabytes of data per day (in incrementals), there's no reason to need that much space or any need to push it to tape unless you really need long term storage.

With ZFS, rsync, some rsh/ssh configuration and a simple cron job, you can simply retreive any data you want backed up via rsync and snapshot the filesystem.

yPass.net's Backup Script

Downloads

View/Download the Backup Script Source (GPL'd PHP source)
View/Download a sample configuation
Sample Script to Snapshot a MySQL Database (shell version)
Download all of the above (ypass-backup-1.0.tar.gz)

Features

  • Configurable via a simple text config file
  • Supports either rsh/ssh (requires .rhosts or authorized_keys setup)
  • All backups are incremental via ZFS snapshots, but can be accessed as full backups
  • Supports compressed transfer
  • Detailed report output
  • User defined "threads" to perform multiple rsyncs at one time (it's not actually threaded, simply forked processes)
  • Execute scripts on the remote host before data is transfered (works great for online MySQL DBs and SVN repositories)

Requirements

  • A Solaris 10 server with ZFS support
  • PHP 5.2 or higher compiled with pcntl support
  • rsync

Simultaneous Backups

If you would like to back up multiple hosts at the same time (very useful for multiple data centers), you can specify a different thread-id for each host configuration. A new backup process will be forked for each configured thread-id and rsync will copy the files in parallel. When the last thread-id is finished copying data, the program will complete its final snapshot work.