I'm having trouble getting a backup to restore, and was wondering if
someone can tell me where I am going wrong, or if it is a bug. I am
testing bacula on 2 machines, lintest being a backup server and va1 a
client, all running linux and bacula 1.38.0. Because I wanted backups of
lintest and va1 to be treated separately, I set up 2 Storage devices and
2 Pools. The problem is that the restore seems to be reading from the
wrong Storage, and can't find the backup volumes. To get specific, I
here is the client backup job as defined in bacula-dir.conf:

Job {
  Name = "VA1 Test"
  JobDefs = "DefaultJob"
  Write Bootstrap = "/var/bacula/Va1_Test.bsr"
  FileSet = Va1Files
  Storage = Va1Directory
  Pool = Va1Pool
}

Storage {
  Name = TmpDirectory
  Address = lintest
  SDPort = 9103
  Password = <removed>
  Device = TmpFileStorage
  Media Type = File
}


Storage {
  Name = Va1Directory
  Address = lintest
  SDPort = 9103
  Password = <removed>
  Device = Va1FileStorage
  Media Type = File
}

Then bacula-sd.conf contains

Device {
  Name = TmpFileStorage
  Media Type = File
  Archive Device = /tmp
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = no;
}

Device {
  Name = Va1FileStorage
  Media Type = File
  Archive Device = /tmp/va1
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = no;
}

The va1 backups are put in /tmp/va1, and the lintest backups are put in
/tmp. That works just fine.

Then, back in bacula-dir.conf, I defined a restore job, the first being
intended for lintest backups and the second for va1 backups.

Job {
  Name = "RestoreFiles"
  Type = Restore
  Client=lintest-fd
  FileSet="Bacula Source"
  Storage = TmpDirectory
  Pool = Default
  Messages = Standard
  Where = /tmp/bacula-restores
}

Job {
  Name = "RestoreFilesForVa1"
  Type = Restore
  Client=va1-fd
  FileSet=Va1Files
  Storage = Va1Directory
  Pool = Va1Pool
  Messages = Standard
  Where = /tmp/bacula-restores
}

I backed up a few files from va1, and now I try to restore them. I enter
the  "restore" command in bconsole, pick the most recent backup for
va1 and mark some files. The first oddity comes when I pick a restore job

The defined Restore Job resources are:
     1: RestoreFiles
     2: RestoreFilesForVa1
Select Restore Job (1-2): 2
Run Restore job
JobName:    RestoreFilesForVa1
Bootstrap: 
/var/bacula/lintest-dir.restore.*Console*.2005-11-14_09.27.29.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Va1Files
Client:     lintest-fd
Storage:    TmpDirectory
When:       2005-11-14 09:29:12
Catalog:    MyCatalog
Priority:   10
OK to run? (yes/mod/no):

Note that the Client and Storage this quotes are not what was configured.
In particular, the storage is wrong. So I do a mod, pick Va1Directory as
the storage and then get

Run Restore job
JobName:    RestoreFilesForVa1
Bootstrap: 
/var/bacula/lintest-dir.restore.*Console*.2005-11-14_09.27.29.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Va1Files
Client:     lintest-fd
Storage:    Va1Directory
When:       2005-11-14 09:29:12
Catalog:    MyCatalog
Priority:   10
OK to run? (yes/mod/no):

Presumably the client has to remain as lintest because that's where the
backups are. When I run the job, it is looking in the wrong Storage

14-Nov 09:42 lintest-sd: RestoreFilesForVa1.2005-11-14_09.41.58 Fatal
error: acquire.c:199 Open device "TmpFileStorage" (/tmp) Volume
"VA1Backup0003" failed: ERR=dev.c:466 Could not open:
/tmp/VA1Backup0003, ERR=No such file or directory

14-Nov 09:42 lintest-fd: RestoreFilesForVa1.2005-11-14_09.41.58 Fatal
error: job.c:1597 Bad response to Read Data command. Wanted 3000 OK data
, got 3000 error

Very odd, it was still using TmpDirectory for the stores.

I tried modifying the default Storage for jobs to be Va1Directory, but
that didn't work. Nor did modifying the storage for the "RestoreFiles
job to point to Va1Directory.

I did change the name of the TmpDirectory storage entry to be
xTmpDirectory, and the Device within that to be xTmpFileStorage. These
are names not referenced anywhere. But then when I run the restore I get

JobName:    RestoreFilesForVa1
Bootstrap: 
/var/bacula/lintest-dir.restore.*Console*.2005-11-14_09.53.14.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Va1Files
Client:     lintest-fd
Storage:    xTmpDirectory
When:       2005-11-14 09:53:34
Catalog:    MyCatalog
Priority:   10

It looks like Bacula is picking up and using the first Storage.

I mod it to have Storage Va1Directory, then when I run it, I don't get
an error. Instead I get

 JobId Level   Name                       Status
======================================================================
    12         RestoreFilesForVa1.2005-11-14_09.54.01 is waiting on
Storage Va1Directory
====

And the job seems to hang at that point. It still seemed to be looking at
xTmpFile Storage, based on the error message that resulted when I
cancelled the job

14-Nov 09:58 lintest-dir: RestoreFilesForVa1.2005-11-14_09.54.01 Fatal
error:
     Storage daemon didn't accept Device "xTmpFileStorage" because:

Finally, I tried switching the order of the storage definitions in
bacula-dir.conf, so Va1Directory was first. That restore job ran fine.
So, it appears that bacula insists on using the first storage definition
it finds for all restore jobs. It seems like a bug to me, but maybe I am
just using it incorrectly?


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id845&op=click
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to