Thanks Bill!

I have 2 jobs configured for each client that are identical other than 
storage/pool.
What I have wound up doing is firing up psql and using these:
select MAX(jobid) from Job where clientid = (select clientid from Client where 
name='server1-fd') and poolid=7 and level='F';
select MAX(jobid) from Job where clientid = (select clientid from Client where 
name='server1-fd') and poolid=7 and level='D';
select jobid from Job where clientid = (select clientid from Client where 
name='server1-fd') and poolid=7 and level='I' and jobid > (select MAX(jobid) 
from Job where clientid = 14 and poolid=7 and level='D') and jobbytes > 0;
having already figured out that poolid 7 is my local storage pool.  The 
jobbytes >0 bit is because of some later jobs that failed.

(My apologies to anyone who looks at my SQL and cringes)

- Michel

-----Original Message-----
From: Bill Arlofski via Bacula-users <bacula-users@lists.sourceforge.net> 
Sent: Saturday, July 19, 2025 11:37 AM
To: bacula-users@lists.sourceforge.net
Subject: Re: [Bacula-users] Selecting jobids for restores

On 7/19/25 10:11 AM, Michel Figgins wrote:
> Hello,
> 
> I have backups going to 2 different SDs – one local and one remote.  
> I’m attempting a full restore of a client which has Full, Diff, and 
> Inc jobs.  Does anyone know of a way to find the necessary jobids that 
> use just one of the SDs?  When I do the restore and select last full for a 
> client, the resulting list of jobids includes jobs from both storages (which 
> is not a huge deal except the Full backup it’s choosing is from the remote 
> storage which is significantly slower than the local one).
> 
> As I’m asking the question I’m realizing that at some point when I’m 
> past the current fire, I’m going to want to re-architect using Virtual Fulls 
> and/or Copy jobs.
> 
> Thanks,

Hello Michel,

In bconsole, you can first find out your storageids for the Storages:

* sql
Enter SQL query: SELECT * FROM storage;

Note the StorageID for the storage you want.


* SELECT jobid, name, level, jobstatus FROM job WHERE writestorageid='xxxx' AND 
jobstatus='T' AND name='yyyy';


This will get you what you need I believe.

Then, in bconsole, do the restore based on the F (local storage), Inc1, Inc2, 
Inc3:

* restore jobid=x,y,z
You have selected the following JobIds: x,y,z

This assumes that when you ran the Virtual full, to the remote storage that you 
did not prune/purge the local Full and consolidated Diffs and Incs.

Personally, I have not tried such a feat, so ymmv. :)

But, having said that, I re-read your message... It seems you are not yet using 
Virtual Fulls.

Now I do not understand. If your fulls go to a remote storage, then that is the 
only place the full can be restored from.  If you run the same job and it 
writes a Full to local and a full to remote at different times, "restore, 
option 6" or option12 might help.

Can you describe your configuration a bit more?


Best regards,
Bill

--
Bill Arlofski
w...@protonmail.com

_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to