On Saturday 25 August 2007 10:31:04 you wrote:
> Hello Marc,
>
> Thanks for the information.  I think this is something that is probably
> well worth the effort to put in the core Bacula code.  I'm going to study
> it a bit to see how it might be organized into a project.  Code like this
> might also help a lot for the simple restores that Bacula currently does by
> speeding up the retrieval.
>
> Perhaps Eric could send me the SQL that creates the tables so that I can
> see more clearly all the fields.

Sql definitions :

    CREATE TABLE brestore_knownjobid
    (
     JobId int4 NOT NULL,
     CONSTRAINT brestore_knownjobid_pkey PRIMARY KEY (JobId)
    );

   CREATE TABLE brestore_pathhierarchy
   (
     PathId int4 NOT NULL,
     PPathId int4 NOT NULL,
     CONSTRAINT brestore_pathhierarchy_pkey PRIMARY KEY (PathId)
   );

   CREATE INDEX brestore_pathhierarchy_ppathid 
                          ON brestore_pathhierarchy (PPathId);

    CREATE TABLE brestore_pathvisibility
    (
      PathId int4 NOT NULL,
      JobId int4 NOT NULL,
      Size int8 DEFAULT 0,                -- used for statistics
      Files int4 DEFAULT 0,               -- used for statistics
      CONSTRAINT brestore_pathvisibility_pkey PRIMARY KEY (JobId, PathId)
    );

    CREATE INDEX brestore_pathvisibility_jobid
                          ON brestore_pathvisibility (JobId);


For example, this is how we list files in a directory :

SELECT File.FilenameId, listfiles.id, listfiles.Name, File.LStat, File.JobId
 FROM
        (SELECT Filename.Name, max(File.FileId) as id
         FROM File, Filename
         WHERE File.FilenameId = Filename.FilenameId
           AND Filename.Name != ''
           AND File.PathId IN (     10,20,20202,20202        )
           AND File.JobId IN (        1,2,3,4           )
         GROUP BY Filename.Name
         ORDER BY Filename.Name) AS listfiles,
File
WHERE File.FileId = listfiles.id

I think, i will wrote a new class (something like Bvfs) which will
do basic operations like in a real filesystem.

ch_dir(pathid)
        Change current directory to pathid
ls_dirs() 
        List all directories in the current directory (pathid and jobid)
ls_files()
        List all files in a the current directory (pathid and jobid)
up_dir()
        Change to parent directory
pwd()
        Get the current pathid
get_pathid(path)
        Return pathid from a given path
get_root()
        Get root pathid
get_all_file_versions(...)
        Get all versions for a file
...

Bye

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to