This chapter presents the new features added to the development 2.5.x versions to be released as Bacula version 3.0.0 near the end of 2008.
Bacula's virtual backup feature is often called Synthetic Backup or Consolidation in other backup products. It permits you to consolidate the previous Full backup plus the most recent Differential backup and any subsequent Incremental backups into a new Full backup. This is accomplished without contacting the client by reading the previous backup data and writing it to a volume in a different pool.
In some respects the Vbackup feature works similar to a Migration job, in that Bacula normally reads the data from the pool specified in the Job resource, and writes it to the Next Pool specified in the Job resource. The input Storage resource and the Output Storage resource must be different.
The Vbackup is enabled on a Job by Job in the Job resource by specifying a level of VirtualFull.
A typical Job resource definition might look like the following:
Job { Name = "MyBackup" Type = Backup Client=localhost-fd FileSet = "Full Set" Storage = File Messages = Standard Pool = Default SpoolData = yes } # Default pool definition Pool { Name = Default Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365d # one year NextPool = Full Storage = File } Pool { Name = Full Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365d # one year Storage = DiskChanger } # Definition of file storage device Storage { Name = File Address = localhost Password = "xxx" Device = FileStorage Media Type = File Maximum Concurrent Jobs = 5 } # Definition of DDS Virtual tape disk storage device Storage { Name = DiskChanger Address = localhost # N.B. Use a fully qualified name here Password = "yyy" Device = DiskChanger Media Type = DiskChangerMedia Maximum Concurrent Jobs = 4 Autochanger = yes }
Then in bconsole or via a Run schedule, you would run the job as:
run job=MyBackup level=Full run job=MyBackup level=Incremental run job=MyBackup level=Differential run job=MyBackup level=Incremental run job=MyBackup level=Incremental
So providing there were changes between each of those jobs, you would end up with a Full backup, a Differential, which includes the first Incremental backup, then two Incremental backups. All the above jobs would be written to the Default pool.
To consolidate those backups into a new Full backup, you would run the following:
run job=MyBackup level=VirtualFull
And it would produce a new Full backup without using the client, and the output would be written to the Full Pool which uses the Diskchanger Storage.
eric 2009-05-06