1.. _sec:api:
2
3API
4===
5
6General
7-------
8
9This document is intended mostly for developers who wish to develop a
10new GUI interface to **Bareos**.
11
12Minimal Code in Console Program
13~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14
15All the Catalog code is in the Directory (with the exception of
16``dbcheck`` and ``bscan``). Therefore also user level security and
17access is implemented in this central place. If code would be spreaded
18everywhere such as in a GUI this will be more difficult. The other
19advantage is that any code you add to the Director is automatically
20available to all interface programs, like the tty console and other
21programs.
22
23GUI Interface is Difficult
24~~~~~~~~~~~~~~~~~~~~~~~~~~
25
26Interfacing to an interactive program such as Bareos can be very
27difficult because the interfacing program must interpret all the prompts
28that may come. This can be next to impossible. There are are a number of
29ways that Bareos is designed to facilitate this:
30
31-  The Bareos network protocol is packet based, and thus pieces of
32   information sent can be ASCII or binary.
33
34-  The packet interface permits knowing where the end of a list is.
35
36-  The packet interface permits special “signals” to be passed rather
37   than data.
38
39-  The Director has a number of commands that are non-interactive. They
40   all begin with a period, and provide things such as the list of all
41   Jobs, list of all Clients, list of all Pools, list of all Storage, …
42   Thus the GUI interface can get to virtually all information that the
43   Director has in a deterministic way. See
44   https://github.com/bareos/bareos/blob/bareos-17.2/src/dird/ua_dotcmds.c
45   for more details on this.
46
47-  Most console commands allow all the arguments to be specified on the
48   command line: e.g. ``run job=NightlyBackup level=Full``
49
50One of the first things to overcome is to be able to establish a
51conversation with the Director. Although you can write all your own
52code, it is probably easier to use the Bareos subroutines. The following
53code is used by the Console program to begin a conversation.
54
55::
56
57    static BSOCK *UA_sock = NULL;
58    static JCR *jcr;
59    ...
60      read-your-config-getting-address-and-pasword;
61      UA_sock = bnet_connect(NULL, 5, 15, "Director daemon", dir->address,
62                              NULL, dir->DIRport, 0);
63       if (UA_sock == NULL) {
64          terminate_console(0);
65          return 1;
66       }
67       jcr.dir_bsock = UA_sock;
68       if (!authenticate_director(\&jcr, dir)) {
69          fprintf(stderr, "ERR=%s", UA_sock->msg);
70          terminate_console(0);
71          return 1;
72       }
73       read_and_process_input(stdin, UA_sock);
74       if (UA_sock) {
75          bnet_sig(UA_sock, BNET_TERMINATE); /* send EOF */
76          bnet_close(UA_sock);
77       }
78       exit 0;
79
80Then the read_and_process_input routine looks like the following:
81
82::
83
84       get-input-to-send-to-the-Director;
85       bnet_fsend(UA_sock, "%s", input);
86       stat = bnet_recv(UA_sock);
87       process-output-from-the-Director;
88
89For a GUI program things will be a bit more complicated. Basically in
90the very inner loop, you will need to check and see if any output is
91available on the UA_sock.
92
93dot commands
94------------
95
96Besides the normal commands (like list, status, run, mount, …) the
97Director offers a number of so called *dot commands*. They all begin
98with a period, are all non-interactive, easily parseable and are
99indended to be used by other Bareos interface programs (GUIs).
100
101See https://github.com/bareos/bareos/blob/master/src/dird/ua_dotcmds.c
102for more details.
103
104-  ``.actiononpurge``
105-  .\ ``api [ 0 | 1 | 2 | off | on | json ]``
106
107   -  Switch between different `api modes <#sec:ApiMode>`__
108
109-  ``.clients``
110
111   -  List all client resources
112
113-  ``.catalogs``
114
115   -  List all catalog resources
116
117-  ``.defaults job=<job-name> | client=<client-name> | storage=<storage-name | pool=<pool-name>``
118
119   -  List default settings
120
121-  ``.filesets``
122
123   -  List all filesets
124
125-  ``.help [ all | item=cmd ]``
126
127   -  Print parsable information about a command
128
129-  ``.jobdefs``
130
131   -  List add JobDef resources
132
133-  ``.jobs``
134
135   -  List job resources
136
137-  ``.levels``
138
139   -  List all backup levels
140
141-  ``.locations``
142-  ``.messages``
143-  ``.media``
144
145   -  List all medias
146
147-  ``.mediatypes``
148
149   -  List all media types
150
151-  ``.msgs``
152
153   -  List all message resources
154
155-  ``.pools``
156
157   -  List all pool resources
158
159-  ``.profiles``
160
161   -  List all profile resources
162
163-  ``.quit``
164
165   -  Close connection
166
167-  ``.sql query=<sqlquery>``
168
169   -  Send an arbitary SQL command
170
171-  ``.schedule``
172
173   -  List all schedule resources
174
175-  ``.status``
176-  ``.storages``
177
178   -  List all storage resources
179
180-  ``.types``
181
182   -  List all job types
183
184-  ``.volstatus``
185
186   -  List all volume status
187
188-  ``.bvfs_lsdirs``
189-  ``.bvfs_lsfiles``
190-  ``.bvfs_update``
191-  ``.bvfs_get_jobids``
192-  ``.bvfs_versions``
193-  ``.bvfs_restore``
194-  ``.bvfs_cleanup``
195-  ``.bvfs_clear_cache``
196
197.. _sec:ApiMode:
198
199API Modes
200---------
201
202The ``.api`` command can be used to switch between the different API
203modes. Besides the ``.api`` command, there is also the ``gui on | off``
204command. However, this command can be ignored, as it set to gui on in
205command execution anyway.
206
207API mode 0 (off)
208~~~~~~~~~~~~~~~~
209
210::
211
212    .api 0
213
214By default, a console connection to the Director is in interactive mode,
215meaning the api mode is off. This is the normal mode you get when using
216the bconsole. The output should be human readable.
217
218API mode 1 (on)
219~~~~~~~~~~~~~~~
220
221To get better parsable output, a console connection could be switched to
222API mode 1 (on).
223
224::
225
226    .api 1
227
228or (form times where they have only been one API flavour)
229
230::
231
232    .api
233
234This mode is intended to create output that is earlier parsable.
235Internaly some commands vary there output for the API mode 1, but not
236all.
237
238In API mode 1 some output is only delimted by the end of a packet, by
239not a new line. bconsole does not display end of packets (for good
240reason, as some output (e.g. ``status``) is send in multiple packets).
241If running in a bconsole, this leads not parsable output for human.
242
243Example:
244
245::
246
247    *.api 0
248    api: 0
249    *.defaults job=BackupClient1
250    job=BackupClient1
251    pool=Incremental
252    messages=Standard
253    client=client1.example.com-fd
254    storage=File
255    where=
256    level=Incremental
257    type=Backup
258    fileset=SelfTest
259    enabled=1
260    catalog=MyCatalog
261    *.api 1
262    api: 1
263    *.defaults job=BackupClient1
264    job=BackupClient1pool=Incrementalmessages=Standardclient=client1.example.com-fdstorage=Filewhere=level=Incrementaltype=Backupfileset=SelfTestenabled=1catalog=MyCatalog
265
266This mode is used by BAT.
267
268-  `Signals <#sec:bnet_sig>`__
269
270API mode 2 (json)
271~~~~~~~~~~~~~~~~~
272
273The API mode 2 (or JSON mode) has been introduced in Bareos-15.2 and
274differs from API mode 1 in several aspects:
275
276-  JSON output
277-  The JSON output is in the format of JSON-RPC 2.0 responce objects
278   (http://www.jsonrpc.org/specification#response_object). This should
279   make it easier to implement a full JSON-RPC service later.
280-  No user interaction inside a command (meaning: if not all parameter
281   are given to a ``run`` command, the command fails).
282-  Each command creates exaclty one responce object.
283
284Currently a subset of the available commands return there result in JSON
285format, while others still write plain text output. When finished, it
286should be safe to run all commands in JSON mode.
287
288A successful responce should return
289
290::
291
292    "result": {
293        "<type_of_the_results>": [
294            {
295                <result_object_1_key_1>: <result_object_1_value_1>,
296                <result_object_1_key_2>: <result_object_1_value_2>,
297                ...
298            },
299            {
300                <result_object_2_key_1>: <result_object_2_value_1>,
301                <result_object_2_key_2>: <result_object_2_value_2>,
302                ...
303            },
304            ...
305        ]
306    }
307
308All keys are lower case.
309
310Examples
311^^^^^^^^
312
313-  list
314
315   -  e.g.
316
317   ::
318
319       *list jobs
320       {
321       "jsonrpc": "2.0",
322       "id": null,
323       "result": {
324         "jobs": [
325           {
326             "type": "B",
327             "starttime": "2015-06-25 16:51:38",
328             "jobfiles": "18",
329             "jobid": "1",
330             "name": "BackupClient1",
331             "jobstatus": "T",
332             "level": "F",
333             "jobbytes": "4651943"
334           },
335           {
336             "type": "B",
337             "starttime": "2015-06-25 17:25:23",
338             "jobfiles": "0",
339             "jobid": "2",
340             "name": "BackupClient1",
341             "jobstatus": "T",
342             "level": "I",
343             "jobbytes": "0"
344           },
345           ...
346         ]
347       }
348       }
349
350   -  keys are the table names
351
352-  llist
353
354   -  e.g.
355
356   ::
357
358       *llist jobs
359       {
360       "jsonrpc": "2.0",
361       "id": null,
362       "result": {
363         "jobs": [
364           {
365             "name": "BackupClient1",
366             "realendtime": "2015-06-25 16:51:40",
367             "Type": "B",
368             "schedtime": "2015-06-25 16:51:33",
369             "poolid": "1",
370             "level": "F",
371             "jobfiles": "18",
372             "volsessionid": "1",
373             "jobid": "1",
374             "job": "BackupClient1.2015-06-25_16.51.35_04",
375             "priorjobid": "0",
376             "endtime": "2015-06-25 16:51:40",
377             "jobtdate": "1435243900",
378             "jobstatus": "T",
379             "jobmissingfiles": "0",
380             "joberrors": "0",
381             "purgedfiles": "0",
382             "starttime": "2015-06-25 16:51:38",
383             "clientname": "ting.dass-it-fd",
384             "clientid": "1",
385             "volsessiontime": "1435243839",
386             "filesetid": "1",
387             "poolname": "Full",
388             "fileset": "SelfTest"
389           },
390           {
391             "name": "BackupClient1",
392             "realendtime": "2015-06-25 17:25:24",
393             "type": "B",
394             "schedtime": "2015-06-25 17:25:10",
395             "poolid": "3",
396             "level": "I",
397             "jobfiles": "0",
398             "volsessionid": "2",
399             "jobid": "2",
400             "job": "BackupClient1.2015-06-25_17.25.20_04",
401             "priorjobid": "0",
402             "endtime": "2015-06-25 17:25:24",
403             "jobtdate": "1435245924",
404             "jobstatus": "T",
405             "jobmissingfiles": "0",
406             "JobErrors": "0",
407             "purgedfiles": "0",
408             "starttime": "2015-06-25 17:25:23",
409             "clientname": "ting.dass-it-fd",
410             "clientid": "1",
411             "volsessiontime": "1435243839",
412             "filesetid": "1",
413             "poolname": "Incremental",
414             "fileset": "SelfTest"
415           },
416           ...
417         ]
418       }
419       }
420
421   -  like the list ``command``, but more values
422
423-  .jobs
424
425   -  e.g.
426
427   ::
428
429       *.jobs
430       {
431       "jsonrpc": "2.0",
432       "id": null,
433       "result": {
434         "jobs": [
435           {
436             "name": "BackupClient1"
437           },
438           {
439             "name": "BackupCatalog"
440           },
441           {
442             "name": "RestoreFiles"
443           }
444         ]
445       }
446       }
447
448Example of a JSON-RPC Error Response
449''''''''''''''''''''''''''''''''''''
450
451Example of a JSON-RPC Error Response
452(http://www.jsonrpc.org/specification#error_object):
453
454::
455
456    *gui
457    {
458      "jsonrpc": "2.0",
459      "id": null,
460      "error": {
461        "data": {
462          "result": {},
463          "messages": {
464            "error": [
465              "ON or OFF keyword missing.\n"
466            ]
467          }
468        },
469        "message": "failed",
470        "code": 1
471      }
472    }
473
474-  an error response is emitted, if the command returns false or emitted
475   an error message
476   (``void UAContext::error_msg(const char *fmt, ...)``). Messages and
477   the result so far will be part of the error response object.
478
479.. _sec:bvfs:
480
481Bvfs API
482--------
483
484The BVFS (Bareos Virtual File System) do provide a API for browsing the
485backuped files in the catalog and select files for restoring.
486
487The Bvfs module works correctly with BaseJobs, Copy and Migration jobs.
488
489The initial version in Bacula have be founded by Bacula Systems.
490
491General notes
492~~~~~~~~~~~~~
493
494-  All fields are separated by a tab (api mode 0 and 1). (api mode 2:
495   JSON format).
496
497-  The output format for api mode 0 and 1 have changed for bareos >=
498   17.2. In earlier versions the second column of the ``bvfs_lsdirs``,
499   ``bvfs_lsfiles`` and ``bvfs_versions`` command have been the
500   ``FilenameId``. As bareos >= 17.2 internally don’t use the
501   ``FilenameId`` any longer, this column have been removed.
502
503-  You can specify ``limit=`` and ``offset=`` to list smoothly records
504   in very big directories. By default, limit=2000.
505
506-  All operations (except cache creation) are designed to run instantly.
507
508-  The cache creation is dependent of the number of directories. As Bvfs
509   shares information across jobs, the first creation can be slow.
510
511-  Due to potential encoding problem, it’s advised to use ``pathid``
512   instead of ``path`` in queries.
513
514Get dependent jobs from a given JobId
515~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
516
517Bvfs allows you to query the catalog against any combination of jobs.
518You can combine all Jobs and all FileSet for a Client in a single
519session.
520
521To get all JobId needed to restore a particular job, you can use the
522``.bvfs_get_jobids`` command.
523
524::
525
526    .bvfs_get_jobids jobid=num [all]
527
528Example:
529
530::
531
532    *.bvfs_get_jobids jobid=10
533    1,2,5,10
534    *.bvfs_get_jobids jobid=10 all
535    1,2,3,5,10
536
537In this example, a normal restore will need to use JobIds 1,2,5,10 to
538compute a complete restore of the system.
539
540With the ``all`` option, the Director will use all defined FileSet for
541this client.
542
543Generating Bvfs cache
544~~~~~~~~~~~~~~~~~~~~~
545
546The ``.bvfs_update`` command computes the directory cache for jobs
547specified in argument, or for all jobs if unspecified.
548
549::
550
551    .bvfs_update [jobid=numlist]
552
553Example:
554
555::
556
557    *.bvfs_update jobid=1,2,3
558
559You can run the cache update process in a RunScript after the catalog
560backup.
561
562List directories
563~~~~~~~~~~~~~~~~
564
565Bvfs allows you to list directories in a specific path.
566
567::
568
569    *.bvfs_lsdirs pathid=num path=/apath jobid=numlist limit=num offset=num
570    PathId  FileId  JobId  LStat  Path
571    PathId  FileId  JobId  LStat  Path
572    PathId  FileId  JobId  LStat  Path
573    ...
574
575In bareos < 17.2 the output has been:
576
577::
578
579    PathId  FilenameId  FileId  JobId  LStat  Path
580
581You need to ``pathid`` or ``path``. Using ``path=`` will list “/” on
582Unix and all drives on Windows.
583
584FilenameId is 0 for all directories.
585
586::
587
588    *.bvfs_lsdirs pathid=4 jobid=1,11,12
589    4       0       0       A A A A A A A A A A A A A A     .
590    5       0       0       A A A A A A A A A A A A A A     ..
591    3       0       0       A A A A A A A A A A A A A A     regress/
592
593In this example, to list directories present in ``regress/``, you can
594use
595
596::
597
598    *.bvfs_lsdirs pathid=3 jobid=1,11,12
599    3       0       0       A A A A A A A A A A A A A A     .
600    4       0       0       A A A A A A A A A A A A A A     ..
601    2       0       0       A A A A A A A A A A A A A A     tmp/
602
603List files
604~~~~~~~~~~
605
606API mode 0
607^^^^^^^^^^
608
609Bvfs allows you to list files in a specific path.
610
611::
612
613    .bvfs_lsfiles pathid=num path=/apath jobid=numlist limit=num offset=num
614    PathId  FileId  JobId  LStat  Filename
615    PathId  FileId  JobId  LStat  Filename
616    PathId  FileId  JobId  LStat  Filename
617    ...
618
619In bareos < 17.2 the output has been:
620
621::
622
623    PathId  FilenameId  FileId  JobId  LStat  Filename
624
625You need to ``pathid`` or ``path``. Using ``path=`` will list “/” on
626Unix and all drives on Windows. If FilenameId is 0, the record listed is
627a directory.
628
629::
630
631    *.bvfs_lsdir pathid=4 jobid=1,11,12
632    4       0       0       A A A A A A A A A A A A A A     .
633    5       0       0       A A A A A A A A A A A A A A     ..
634    1       0       0       A A A A A A A A A A A A A A     regress/
635
636In this example, to list files present in ``regress/``, you can use
637
638::
639
640    *.bvfs_lsfiles pathid=1 jobid=1,11,12
641    1   52   12    gD HRid IGk BAA I BMqcPH BMqcPE BMqe+t A     titi
642    1   53   12    gD HRid IGk BAA I BMqe/K BMqcPE BMqe+t B     toto
643    1   54   12    gD HRie IGk BAA I BMqcPH BMqcPE BMqe+3 A     tutu
644    1   55   12    gD HRid IGk BAA I BMqe/K BMqcPE BMqe+t B     ficheriro1.txt
645    1   56   12    gD HRie IGk BAA I BMqe/K BMqcPE BMqe+3 D     ficheriro2.txt
646
647API mode 1
648^^^^^^^^^^
649
650::
651
652    *.api 1
653    *.bvfs_lsfiles jobid=1 pathid=1
654    1   7   1   gD OEE4 IHo B GHH GHH A G9S BAA 4 BVjBQG BVjBQG BVjBQG A A C    bpluginfo
655    1   4   1   gD OEE3 KH/ B GHH GHH A W BAA A BVjBQ7 BVjBQG BVjBQG A A C  bregex
656    ...
657
658API mode 2
659^^^^^^^^^^
660
661::
662
663    *.api 2
664    *.bvfs_lsfiles jobid=1 pathid=1
665    {
666      "jsonrpc": "2.0",
667      "id": null,
668      "result": {
669        "files": [
670          {
671            "jobid": 1,
672            "type": "F",
673            "fileid": 7,
674            "lstat": "gD OEE4 IHo B GHH GHH A G9S BAA 4 BVjBQG BVjBQG BVjBQG A A C",
675            "pathid": 1,
676            "stat": {
677              "atime": 1435243526,
678              "ino": 3686712,
679              "dev": 2051,
680              "mode": 33256,
681              "gid": 25031,
682              "nlink": 1,
683              "uid": 25031,
684              "ctime": 1435243526,
685              "rdev": 0,
686              "size": 28498,
687              "mtime": 1435243526
688            },
689            "name": "bpluginfo",
690            "linkfileindex": 0
691          },
692          {
693            "jobid": 1,
694            "type": "F",
695            "fileid": 4,
696            "lstat": "gD OEE3 KH/ B GHH GHH A W BAA A BVjBQ7 BVjBQG BVjBQG A A C",
697            "pathid": 1,
698            "stat": {
699              "atime": 1435243579,
700              "ino": 3686711,
701              "dev": 2051,
702              "mode": 41471,
703              "gid": 25031,
704              "nlink": 1,
705              "uid": 25031,
706              "ctime": 1435243526,
707              "rdev": 0,
708              "size": 22,
709              "mtime": 1435243526
710            },
711            "name": "bregex",
712            "linkfileindex": 0
713          },
714          ...
715        ]
716      }
717    }
718
719API mode JSON contains all information also available in the other API
720modes, but displays them more verbose.
721
722Get all versions of a specific file
723~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
724
725Bvfs allows you to find all versions of a specific file for a given
726Client with the ``.bvfs_version`` command. To avoid problems with
727encoding, this function uses only PathId and FilenameId.
728
729The jobid argument is mandatory but unused.
730
731::
732
733    *.bvfs_versions jobid=0 client=filedaemon pathid=num fname=filename [copies] [versions]
734    PathId FileId JobId LStat Md5 VolName InChanger
735    PathId FileId JobId LStat Md5 VolName InChanger
736    ...
737
738Example:
739
740::
741
742    *.bvfs_versions jobid=0 client=localhost-fd pathid=1 fnane=toto
743    1  49  12  gD HRid IGk D Po Po A P BAA I A   /uPgWaxMgKZlnMti7LChyA  Vol1  1
744
745Restore set of files
746~~~~~~~~~~~~~~~~~~~~
747
748Bvfs allows you to create a SQL table that contains files that you want
749to restore. This table can be provided to a restore command with the
750file option.
751
752::
753
754    *.bvfs_restore fileid=numlist dirid=numlist hardlink=numlist path=b2num
755    OK
756    *restore file=?b2num ...
757
758To include a directory (with ``dirid``), Bvfs needs to run a query to
759select all files. This query could be time consuming.
760
761``hardlink`` list is always composed of a serie of two numbers (jobid,
762fileindex). This information can be found in the LinkFileIndex (LinkFI)
763field of the LStat packet.
764
765The ``path`` argument represents the name of the table that Bvfs will
766store results. The format of this table is ``b2[0-9]+``. (Should start
767by b2 and followed by digits).
768
769Example:
770
771::
772
773    *.bvfs_restore fileid=1,2,3,4 hardlink=10,15,10,20 jobid=10 path=b20001
774    OK
775
776Cleanup after Restore
777~~~~~~~~~~~~~~~~~~~~~
778
779To drop the table used by the restore command, you can use the
780``.bvfs_cleanup`` command.
781
782::
783
784    *.bvfs_cleanup path=b20001
785
786Clearing the BVFS Cache
787~~~~~~~~~~~~~~~~~~~~~~~
788
789To clear the BVFS cache, you can use the ``.bvfs_clear_cache`` command.
790
791::
792
793    *.bvfs_clear_cache yes
794    OK
795
796Example for directory browsing using bvfs
797~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
798
799::
800
801    # update the bvfs cache for all jobs
802    *.bvfs_update
803    Automatically selected Catalog: MyCatalog
804    Using Catalog "MyCatalog
805
806    # Get jobids required to reconstruct a current full backup.
807    # This is optional. Only required if you care about a full backup.
808    # If you are only interessed in a single (differential or incremental) backup job,
809    # just use the single jobid.
810    *.bvfs_get_jobids jobid=123
811    117,118,123
812
813    # get root directory of the combined jobs 117,118,123
814    *.bvfs_lsdir jobid=117,118,123 path=
815    134 0   0   A A A A A A A A A A A A A A .
816    133 0   0   A A A A A A A A A A A A A A /
817
818    # path=/ (pathid=133) is the root directory.
819    # Check the root directory for subdirectories.
820    .bvfs_lsdir jobid=117,118,123 pathid=133
821    133 0   0   A A A A A A A A A A A A A A .
822    130 0   0   A A A A A A A A A A A A A A ..
823    1   23  123 z GiuU EH9 C GHH GHH A BAA BAA I BWA5Px BaIDUN BaIDUN A A C sbin/
824
825    # the first really backuped path is /sbin/ (pathid=1)
826    # as it has values other than 0 for FileId, JobId and LStat.
827    # Now we check, if it has futher subdirectories.
828    *.bvfs_lsdir jobid=1 pathid=1
829    1   23  123 z GiuU EH9 C GHH GHH A BAA BAA I BWA5Px BaIDUN BaIDUN A A C .
830    129 0   0   A A A A A A A A A A A A A A ..
831
832    # pathid=1 has no further subdirectories.
833    # Now we list the files in pathid=1 (/sbin/)
834    .bvfs_lsfiles jobid=117,118,123 pathid=1
835    1   18  123 z Gli+ IHo B GHH GHH A NVkY BAA BrA BaIDUJ BaIDUJ BaIDUJ A A C  bareos-dir
836    1   21  123 z GkuS IHo B GHH GHH A C1bw BAA XA BaIDUG BaIDUG BaIDUG A A C   bareos-fd
837    1   19  123 z Glju IHo B GHH GHH A CeNg BAA UI BaIDUJ BaIDUJ BaIDUJ A A C   bareos-sd
838    ...
839
840    # there are a number of files in /sbin/.
841    # We check, if there are different versions of the file bareos-dir.
842    *.bvfs_versions jobid=0 client=bareos-fd pathid=1 fname=bareos-dir
843    1   18  123 z Gli+ IHo B GHH GHH A NVkY BAA BrA BaIDUJ BaIDUJ BaIDUJ A A C  928EB+EJGFtWD7wQ8bVjew  Full-0001   0
844    1   1067    127 z Glnc IHo B GHH GHH A NVkY BAA BrA BaKDT2 BaKDT2 BaKDT2 A A C  928EB+EJGFtWD7wQ8bVjew  Incremental-0007    0
845
846    # multiple versions of the file bareos-dir have been backuped.
847