Hello Radoslaw, 

I'm extremely busy this days. I promise I will read this email tomorrow
and will answer you. 

Thank you so much in advance. I'm extremely thankful for your help mates
:) :) really.... 

I answer tomorrow when I have been able to read it carefully :) :) :) 

Cheers!!!

El 2022-03-08 11:10, Radosław Korzeniewski escribió:

> ATENCION: Este correo se ha enviado desde fuera de la organización. No pinche 
> en los enlaces ni abra los adjuntos a no ser que reconozca el remitente y 
> sepa que el contenido es seguro.
> 
> Hello, 
> 
> pon., 7 mar 2022 o 12:44 egoitz--- via Bacula-devel 
> <bacula-devel@lists.sourceforge.net> napisał(a): 
> 
>> - I'm working in trying to create an open source version of the delta 
>> encoding plugin by using the bacula-fd plugin api. When working on it I have 
>> seen Bacula's source is aware of delta and delta file sequentiation. I have 
>> seen for instance, even a .bvfs command exists for showing deltas of a file 
>> id. But, what  I have not found is that Bacula works on that Delta files 
>> generation (patch generation, signatures, etc...).
> 
> "delta files generation" - whatever it is is solely responsible for the 
> plugin. 
> Bacula provides a delta sequencing mechanism only. 
> 
>> I assume that Bacula in the non-fd part, acts just as a just delta file 
>> holder keeping the files and stores the patch sequentiation just that.
> 
> It is stored in the catalog, so during restore the Director knows that it has 
> to include all incremental files in sequence instead of the latest one.  
> 
>> Bacula keeps records of deltas in database (and file storages) but only fd 
>> works with them (with probably a library like librsync in the delta plugin)
> 
> No, the delta sequencing - a.k.a. block level incrementals is handled by fd 
> and dir where a fd/plugin is responsible for all diff + patches.  
> 
>> in the sense of applying patches over an original file or even generating 
>> deltas when backup. Am I wrong?. Was just for understanding the nice work 
>> done and what's already written and free in Bacula's source for this purpose.
> 
> Yes, the fd/plugin is responsible for all "the dirty work" and Bacula 
> "framework" helps organize it. 
> 
>> - By the way, I have one question about virtual files. I have not seen very 
>> clear (perhaps my problem as don't understand it) how to work with them. I 
>> understand the concept, but have not seen a clear example of how for 
>> instance in the backup you create a virtual file, how do you see it in bvfs 
>> and finally... what you get after restoring. In page 36/146 of Bacula 11 for 
>> developers pdf, you say "This will create a virtual file." but really you 
>> are entering in the structure : 
>> 
>> sp->type = FT_REG;
>> sp->statp.st_mode = 0700 | S_IFREG; 
>> 
>> FT_REG and S_IFREG both are for regular files.... what exactly causes a 
>> virtual file to be created?. Perhaps st_size -1?.
> 
> In this sense a "virtual" is a file which does not exist on a backup server 
> and is created programmatically with a plugin API. This file is seen by a 
> Bacula as an ordinary file with a slightly different backup stream id, so fd 
> will know what tool to use to restore it. 
> You can fill "struct stat" with whatever acceptable values you want, where 
> st_size should match as close as possible the real size of the saved file. 
> The size == -1 will confuse users. 
> 
>> Are they relevant for what I'm trying to do?. It seems Bacula handles delta 
>> sequentiation so... perhaps for this purpose I shouldn't need "virtual 
>> files"?.
> 
> No, the virtual files are available in command plugins api only and are used 
> mainly for creating backups of different applications, i.e. running 
> databases, where a standard file backup is useless, not optimal or simply 
> unavailable. 
> 
>> - I'm planning to implement delta encoding by checking the previous day file 
>> signature done by librsync. Instead of looking at the filesystem it would be 
>> nice if I could take a look at that signature in the last backup done 
>> (yesterday backup).
> 
> What "signature" are you thinking of?  
> There is an "accurate catalog query api" in Bacula but as far I know it is 
> not handling checksums (md5, sha, etc). 
> You can extend this code if you wish. 
> 
>> Could it be possible in some manner, that if I see a file passed in 
>> EventHandleBackupFile() to check if yesterdays signature exists in the 
>> backup of yesterday, and then read the yesterday signature from the own 
>> backup?. I mean, instead of having to leave the signature in the being 
>> backed server's filesystem.
> 
> Do you want to store your librsync signatures in a catalog database? Did you 
> count the required size?  
> 
>> - The last one :) . For restoring, and for the code seen (for instance in 
>> insert_missing_delta()) I assume Bacula detects we are restoring a delta 
>> compressed file.
> 
> Block incremental is far from compressed, IMVHO. BEE Plugins (i.e. vSphere, 
> Proxmox, XENServer among others) heavily use delta sequencing for VM Image 
> incremental backups. This functionality is not compression which you can 
> apply to generated backup stream, i.e. LZO, GZIP or GED.  
> 
>> Then I assume Bacula restores apart from the own initial file, patches to 
>> arrive to the day we want to restore to. Am I wrong?.
> 
> I do not understand your question, so I describe how it works - for fd 
> command plugin: 
> - fd command plugin during backup generates delta sequence for a file and 
> saves incremental information - in most cases as an offset to changed block 
> and its new content, but it can do anything else, i.e. a QEMU Incremental 
> Plugin generates an incremental qcow2 image in this step 
> -  during restore Bacula will send selected fd command plugin the same 
> information and data what it generates during backup, so for XENServer Plugin 
> it simply get offset and raw data to perform destination image patching, but 
> for QEMU Plugin it receives a qcow2  incremental image which is then used for 
> qcow2 image patching. 
> 
>> Perhaps later in a post-restore job I could run a shell script that tries to 
>> find patches pending to be applied to a parent file. I suppose then I could 
>> apply and the backup would become finally restored. Does some other more 
>> elegant way you could advise me?.
> 
> Do not run external scripts for that. It will hurt you more than you think. 
> :) 
> 
> best regards -- 
> Radosław Korzeniewski
> rados...@korzeniewski.net
_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to