Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

On site A, I have sucessfully set up a bacula director on one host, several File Daemons on the hosts I want to backup, and finally one Storage Daemon where the backup actually is stored.

If disaster struck the building Site A, I want a second Storage Daemon on another site, Site B.

The Filesets, Director etc would be the same, except the jobs will be stored on the other Storage Daemon as well.

Are there any best practises on this?

share|improve this question

You could either migrate or copy the job from the working volume to the final one:

... The term Migration, as used in the context of Bacula, means moving data from one Volume to another. In particular it refers to a Job (similar to a backup job) that reads data that was previously backed up to a Volume and writes it to another Volume ...

... The Copy process is essentially identical to the Migration feature with the exception that the Job that is copied is left unchanged ...


In case you are using software compression, it would be better to copy the volume files from one site to another (using migration it will decompress and compress again).

You can use RunScript in the job resource to run an rsync, ftp, scp or any other available copy method after the backup is done.

Don't forget to copy the catalog database, otherwise you'll need to use bscan or some to recover the information. You could use MySQL replication too.

share|improve this answer
The migration copy is the least abusive (to the clients) way to do this from within Bacula. If you're backing up to disk though you might want to go with rsyncing the files (and a DB dump). – voretaq7 Feb 12 '13 at 20:39

Doing what you want effectively means running the backups two times (two jobs, one backing up to the SD at Site A, the other to the SD at Site B) -- A better approach (assuming you back up to files on disK) might be to use something like DRBD (Linux) or GEOM gates (FreeBSD) to duplicate the back-end storage your daemon is using: This provides replication of the data without requiring a second backup job (though it has its own problems if your network link isn't reliable).

Other options include rsyncing your tape-files to an off-site provider (e.g., or your own secondary datacenter if you have one) which provides you with a local and remote copy in the event disaster strikes your main datacenter. The big caveat here is that your "remote" copy is always out of sync by as long as it takes your system to transfer the files over.

For what it's worth, my implementation is a variation on the second method I described: As part of the Bacula mount/unmount scripts the server rsyncs the virtual tape files (on mounting it pulls any changes from the remote site. On unmounting it pushes the changes).
This does make mounting/unmounting tapes take longer, which increases the time it takes a backup to complete (backups hang waiting for the "tape" to unmount while rsync is running), but with sufficient bandwidth between sites (and rsync's intelligent deltas) the overhead is not too bad.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.