]> git.sur5r.net Git - bacula/docs/commitdiff
Doc updates
authorKern Sibbald <kern@sibbald.com>
Wed, 22 Jun 2005 19:13:32 +0000 (19:13 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 22 Jun 2005 19:13:32 +0000 (19:13 +0000)
18 files changed:
docs/developers/catalog.tex
docs/home-page/pages/bugs.php
docs/home-page/pages/support.php
docs/manual/autochangers.tex
docs/manual/catalog.tex [deleted file]
docs/manual/faq.tex
docs/manual/filedconf.tex
docs/manual/general.tex
docs/manual/install.tex
docs/manual/mysql.tex
docs/manual/postgresql.tex
docs/manual/python.tex
docs/manual/requirements.tex
docs/manual/sqlite.tex
docs/manual/storedconf.tex
docs/manual/supportedchangers.tex
docs/manual/tapetesting.tex
docs/manual/win32.tex

index eebe59bca4bcc84aa712b45086da357430d2965e..6a5d96a2de4873efdbe9e2e372bda67d151dbaa0 100644 (file)
@@ -33,7 +33,8 @@ can be directly embedded in {\bf Bacula} thus requiring much less effort from
 the system administrator or person building {\bf Bacula}. In our testing
 SQLite has performed very well, and for the functions that we use, it has
 never encountered any errors except that it does not appear to handle
-databases larger than 2GBytes. 
+databases larger than 2GBytes. That said, we would not recommend it for
+serious production use.
 
 The Bacula SQL code has been written in a manner that will allow it to be
 easily modified to support any of the current SQL database systems on the
index 4afa266defe58621423fdbd0cc401d793183dd6e..9f5c38758f24c6743463551edc03daf1ff016d98 100644 (file)
@@ -36,9 +36,10 @@ as the minimum information, which you can enter into the appropriate
 fields of the bug reporting system:
 <ul>
 <li>Your operating system</li>
-
 <li>The version of Bacula you are using</li>
 <li>A <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">clear and concise</a> description of the problem</li>
+<li>If you say &quot;it crashes&quot;, &quot;it doesn't work&quot; or something
+  similar, you should include some output from Bacula that shows this.</li>
 </ul>
 If you are having tape problems, please include:
 <ul>
index 4dba4e99b7a8e6f9250c9cd6dac014e03290232d..05f01a1044b113a88d38f51415f6030528f45bda 100644 (file)
@@ -1,9 +1,7 @@
 <? require_once("inc/header.php"); ?>
 <table>
 <tr>
-        <td class="contentTopic">
-                Support for Bacula
-        </td>
+   <td class="contentTopic"> Support for Bacula </td>
 </tr>
 <tr>
    <td class="content">
    <p>If you are looking for live-suppport you might check out our irc-channel
    in the <a href="http://www.freenode.net">Freenode</a> net, called #bacula.
 
+<h3>Information Needed</h3>
+For us to respond to a bug report, we normally need the following
+as the minimum information, which you can enter into the appropriate
+fields of the bug reporting system:
+<ul>
+<li>Your operating system</li>
+<li>The version of Bacula you are using</li>
+<li>A <a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">clear and concise</a> description of the problem</li>
+<li>If you say &quot;it crashes&quot;, &quot;it doesn't work&quot; or something
+  similar, you should include some output from Bacula that shows this.</li>
+</ul>
+If you are having tape problems, please include:
+<ul>
+ <li>The kind of tape drive you have </li>
+ <li>Have you run the <b>btape</b> &quot;test&quot; command?</li>
+
+</ul>
+The first two of these items can be fulfilled by sending
+us a copy of your <b>config.out</b> file, which is in the
+main <b>Bacula</b> source directory after you have done
+your <b>./configure</b>.
+<p>In addition, we will sometimes need a copy of your Bacula
+configuration files (especially bacula-dir.conf). If you
+think it is a configuration problem, please don't hesitate
+to send them if necessary.</td>
+</tr>
+<tr>
+   <td style="font-size: 14px; padding: 0px 20px 0px 20px">
+   Please read that little Bug-Report-<a href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">HowTo</a> as well.
    </td>
 </tr>
+
 </table>
 <? require_once("inc/footer.php"); ?>
index 5fb372f4d87a186dbfd7b8dcf41857eda741c933..d6d631a0d4deec3bd867887ca219a6abff298a37 100644 (file)
@@ -12,9 +12,9 @@
 \index[general]{Autochangers -- General }
 \addcontentsline{toc}{subsection}{Autochangers -- General}
 
-Bacula provides autochanger support for reading
-and writing tapes. In order to work with an autochanger, Bacula requires three
-things, each of which is explained in more detail after this list: 
+Bacula provides autochanger support for reading and writing tapes.  In
+order to work with an autochanger, Bacula requires three things, each of
+which is explained in more detail after this list:
 
 \begin{itemize}
 \item A script that actually controls the autochanger according  to commands
@@ -24,27 +24,32 @@ things, each of which is explained in more detail after this list:
 \item That each Volume (tape) to be used must be defined in the  Catalog and
    have a Slot number assigned  to it so that Bacula knows where the Volume is in
    the  autochanger. This is generally done with the {\bf label}  command. See
-   below for more details.  
+   below for more details. You must pre-label the tapes manually before
+   using them. 
 \item Modifications to your Storage daemon's Device configuration  resource to
    identify that the device is a changer, as well  as a few other parameters.  
 \item You should also modify your Storage resource definition  in the
    Director's configuration file so that you are automatically prompted for the
    Slot when labeling a Volume. 
+\item You need to ensure that your Storage daemon (if not running as root)
+   has access permissions to both the tape drive and the control device.
 \end{itemize}
 
 In version 1.37, there is a new \ilink{Autochanger
 resource}{AutochangerRes} that permits you to group Device resources thus
-creating a multi-drive autochanger.
+creating a multi-drive autochanger. If you have a multi-drive autochanger,
+you must use this new resource. If you have a single drive autochanger,
+it is recommended, but not required.                                 
 
 Bacula uses its own {\bf mtx-changer} script to interface with a program
-that actually does the tape changing. Thus in principle, {\bf mtx-changer} can
-be adapted to function with any autochanger program. The current version of
-{\bf mtx-changer} works with the {\bf mtx} program. However, FreeBSD users have
-provided a script in the {\bf examples} directory that allows Bacula to use
-the {\bf chio} program.
+that actually does the tape changing.  Thus in principle, {\bf mtx-changer}
+can be adapted to function with any autochanger program.  The current
+version of {\bf mtx-changer} works with the {\bf mtx} program.  However,
+FreeBSD users have provided a script in the {\bf examples/autochangers}
+directory that allows Bacula to use the {\bf chio} program.
 
 Bacula also supports autochangers with barcode
-readers. This support includes two new Console commands: {\bf label barcodes}
+readers. This support includes two Console commands: {\bf label barcodes}
 and {\bf update slots}. For more details on these commands, see the ``Barcode
 Support'' section below. 
 
@@ -110,6 +115,9 @@ camcontrol devlist
 To list the SCSI devices as well as the {\bf /dev/passn} that you will use on
 the Bacula {\bf Changer Device = } directive. 
 
+Please check that your Storage daemon has permission to access this
+device.
+
 \label{scripts}
 
 \subsection*{Example Scripts}
@@ -156,7 +164,6 @@ list Volumes
 in the Console program.
 
 \label{mult}
-
 \subsection*{Multiple Devices}
 \index[general]{Devices!Multiple }
 \index[general]{Multiple Devices }
@@ -178,16 +185,11 @@ Multi-drive requires the use of the {\bf
 Drive Index} directive in the Device resource of the Storage daemon's
 configuration file. Drive numbers or the Device Index are numbered beginning
 at zero, which is the default. To use the second Drive in an autochanger, you
-need to define a second Device resource and set the Drive Index to one for
+need to define a second Device resource and set the Drive Index to 1 for
 that device. In general, the second device will have the same {\bf Changer
 Device} (control channel) as the first drive, but a different {\bf Archive
 Device}. 
 
-The current version (1.37.16) of Bacula does not coordinate between the two
-drives, so you must make sure that Bacula doesn't attempt to mount the same
-Volume on both drives at the same time. There are a number of ways to do this.
-One is to use different pools for each drive. 
-
 \label{ConfigRecords}
 \subsection*{Device Configuration Records}
 \index[general]{Records!Device Configuration }
@@ -226,9 +228,12 @@ devices typically have  several drives and a large number of tapes.
 On FreeBSD systems, the changer device will typically be on {\bf /dev/pass0}
 through {\bf /dev/passn}.  
 
-On Solaris, the changer device will typically be some file  under {\bf
+On Solaris, the changer device will typically be some file under {\bf
 /dev/rdsk}.  
 
+Please ensure that your Storage daemon has permission to access this
+device.
+
 \item [Changer Command = \lt{}command\gt{}]
    \index[sd]{Changer Command  }
    This record is used to specify the external program to call  and what
@@ -250,7 +255,6 @@ the operating system for execution:
       %s = Slot base 0
       %S = Slot base 1
       %v = Volume name
-     
 \end{verbatim}
 \normalsize
 
@@ -260,7 +264,6 @@ of the Bacula distribution) is:
 \footnotesize
 \begin{verbatim}
 Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
-    
 \end{verbatim}
 \normalsize
 
@@ -345,9 +348,14 @@ system.
 
 If you add an {\bf Autochanger = yes} record to the Storage resource in your
 Director's configuration file, the Bacula Console will automatically prompt
-you for the slot number and whether or not the Volume is in the changer when
-you {\bf add} or {\bf label} tapes for that Storage device. You must also set
-{\bf Autochanger = yes} in the Device resource as we have described above in
+you for the slot number when the Volume is in the changer when
+you {\bf add} or {\bf label} tapes for that Storage device. If your
+{\bf mtx-changer} script is properly installed, Bacula will automatically
+load the correct tape during the label command.
+  
+You must also set
+{\bf Autochanger = yes} in the Storage daemon's Device resource                
+as we have described above in
 order for the autochanger to be used. Please see the 
 \ilink{Storage Resource}{Autochanger1} in the Director's chapter
 and the 
@@ -370,6 +378,10 @@ record will also be created in the catalog. Any barcode that begins with the
 same characters as specified on the ``CleaningPrefix=xxx'' command, will be
 treated as a cleaning tape, and will not be labeled. For example with: 
 
+Please note that Volumes must be pre-labeled to be automatically used in
+the autochanger during a backup.  If you do not have a barcode reader, this
+is done manually (or via a script).
+
 \footnotesize
 \begin{verbatim}
 Pool {
@@ -390,7 +402,7 @@ and will not be mounted.
 \addcontentsline{toc}{subsection}{Dealing with Multiple Magazines}
 
 If you have several magazines or if you insert or remove cartridges from a
-magazine, you will need to notify Bacula of this. By doing so, Bacula will as
+magazine, you should notify Bacula of this. By doing so, Bacula will as
 a preference, use Volumes that it knows to be in the autochanger before
 accessing Volumes that are not in the autochanger. This prevents unneeded
 operator intervention. 
diff --git a/docs/manual/catalog.tex b/docs/manual/catalog.tex
deleted file mode 100644 (file)
index eebe59b..0000000
+++ /dev/null
@@ -1,929 +0,0 @@
-%%
-%%
-
-\section*{Catalog Services}
-\label{_ChapterStart30}
-\index[general]{Services!Catalog }
-\index[general]{Catalog Services }
-\addcontentsline{toc}{section}{Catalog Services}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
-
-This chapter is intended to be a technical discussion of the Catalog services
-and as such is not targeted at end users but rather at developers and system
-administrators that want or need to know more of the working details of {\bf
-Bacula}. 
-
-The {\bf Bacula Catalog} services consist of the programs that provide the SQL
-database engine for storage and retrieval of all information concerning files
-that were backed up and their locations on the storage media. 
-
-We have investigated the possibility of using the following SQL engines for
-Bacula: Beagle, mSQL, GNU SQL, PostgreSQL, SQLite, Oracle, and MySQL. Each
-presents certain problems with either licensing or maturity. At present, we
-have chosen for development purposes to use MySQL, PostgreSQL and SQLite.
-MySQL was chosen because it is fast, proven to be reliable, widely used, and
-actively being developed. MySQL is released under the GNU GPL license.
-PostgreSQL was chosen because it is a full-featured, very mature database, and
-because Dan Langille did the Bacula driver for it. PostgreSQL is distributed
-under the BSD license. SQLite was chosen because it is small, efficient, and
-can be directly embedded in {\bf Bacula} thus requiring much less effort from
-the system administrator or person building {\bf Bacula}. In our testing
-SQLite has performed very well, and for the functions that we use, it has
-never encountered any errors except that it does not appear to handle
-databases larger than 2GBytes. 
-
-The Bacula SQL code has been written in a manner that will allow it to be
-easily modified to support any of the current SQL database systems on the
-market (for example: mSQL, iODBC, unixODBC, Solid, OpenLink ODBC, EasySoft
-ODBC, InterBase, Oracle8, Oracle7, and DB2). 
-
-If you do not specify either {\bf \verb{--{with-mysql} or {\bf \verb{--{with-postgresql} or
-{\bf \verb{--{with-sqlite} on the ./configure line, Bacula will use its minimalist
-internal database. This database is kept for build reasons but is no longer
-supported. Bacula {\bf requires} one of the three databases (MySQL,
-PostgreSQL, or SQLite) to run. 
-
-\subsubsection*{Filenames and Maximum Filename Length}
-\index[general]{Filenames and Maximum Filename Length }
-\index[general]{Length!Filenames and Maximum Filename }
-\addcontentsline{toc}{subsubsection}{Filenames and Maximum Filename Length}
-
-In general, either MySQL, PostgreSQL or SQLite permit storing arbitrary long
-path names and file names in the catalog database. In practice, there still
-may be one or two places in the Catalog interface code that restrict the
-maximum path length to 512 characters and the maximum file name length to 512
-characters. These restrictions are believed to have been removed. Please note,
-these restrictions apply only to the Catalog database and thus to your ability
-to list online the files saved during any job. All information received and
-stored by the Storage daemon (normally on tape) allows and handles arbitrarily
-long path and filenames. 
-
-\subsubsection*{Installing and Configuring MySQL}
-\index[general]{MySQL!Installing and Configuring }
-\index[general]{Installing and Configuring MySQL }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring MySQL}
-
-For the details of installing and configuring MySQL, please see the 
-\ilink{Installing and Configuring MySQL}{_ChapterStart} chapter of
-this manual. 
-
-\subsubsection*{Installing and Configuring PostgreSQL}
-\index[general]{PostgreSQL!Installing and Configuring }
-\index[general]{Installing and Configuring PostgreSQL }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring PostgreSQL}
-
-For the details of installing and configuring PostgreSQL, please see the 
-\ilink{Installing and Configuring PostgreSQL}{_ChapterStart10}
-chapter of this manual. 
-
-\subsubsection*{Installing and Configuring SQLite}
-\index[general]{Installing and Configuring SQLite }
-\index[general]{SQLite!Installing and Configuring }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring SQLite}
-
-For the details of installing and configuring SQLite, please see the 
-\ilink{Installing and Configuring SQLite}{_ChapterStart33} chapter of
-this manual. 
-
-\subsubsection*{Internal Bacula Catalog}
-\index[general]{Catalog!Internal Bacula }
-\index[general]{Internal Bacula Catalog }
-\addcontentsline{toc}{subsubsection}{Internal Bacula Catalog}
-
-Please see the 
-\ilink{Internal Bacula Database}{_ChapterStart42} chapter of this
-manual for more details. 
-
-\subsubsection*{Database Table Design}
-\index[general]{Design!Database Table }
-\index[general]{Database Table Design }
-\addcontentsline{toc}{subsubsection}{Database Table Design}
-
-All discussions that follow pertain to the MySQL database. The details for the
-PostgreSQL and SQLite databases are essentially identical except for that all
-fields in the SQLite database are stored as ASCII text and some of the
-database creation statements are a bit different. The details of the internal
-Bacula catalog are not discussed here. 
-
-Because the Catalog database may contain very large amounts of data for large
-sites, we have made a modest attempt to normalize the data tables to reduce
-redundant information. While reducing the size of the database significantly,
-it does, unfortunately, add some complications to the structures. 
-
-In simple terms, the Catalog database must contain a record of all Jobs run by
-Bacula, and for each Job, it must maintain a list of all files saved, with
-their File Attributes (permissions, create date, ...), and the location and
-Media on which the file is stored. This is seemingly a simple task, but it
-represents a huge amount interlinked data. Note: the list of files and their
-attributes is not maintained when using the internal Bacula database. The data
-stored in the File records, which allows the user or administrator to obtain a
-list of all files backed up during a job, is by far the largest volume of
-information put into the Catalog database. 
-
-Although the Catalog database has been designed to handle backup data for
-multiple clients, some users may want to maintain multiple databases, one for
-each machine to be backed up. This reduces the risk of confusion of accidental
-restoring a file to the wrong machine as well as reducing the amount of data
-in a single database, thus increasing efficiency and reducing the impact of a
-lost or damaged database. 
-
-\subsection*{Sequence of Creation of Records for a Save Job}
-\index[general]{Sequence of Creation of Records for a Save Job }
-\index[general]{Job!Sequence of Creation of Records for a Save }
-\addcontentsline{toc}{subsection}{Sequence of Creation of Records for a Save
-Job}
-
-Start with StartDate, ClientName, Filename, Path, Attributes, MediaName,
-MediaCoordinates. (PartNumber, NumParts). In the steps below, ``Create new''
-means to create a new record whether or not it is unique. ``Create unique''
-means each record in the database should be unique. Thus, one must first
-search to see if the record exists, and only if not should a new one be
-created, otherwise the existing RecordId should be used. 
-
-\begin{enumerate}
-\item Create new Job record with StartDate; save JobId  
-\item Create unique Media record; save MediaId  
-\item Create unique Client record; save ClientId  
-\item Create unique Filename record; save FilenameId  
-\item Create unique Path record; save PathId  
-\item Create unique Attribute record; save AttributeId  
-   store ClientId, FilenameId, PathId, and Attributes  
-\item Create new File record  
-   store JobId, AttributeId, MediaCoordinates, etc  
-\item Repeat steps 4 through 8 for each file  
-\item Create a JobMedia record; save MediaId  
-\item Update Job record filling in EndDate and other Job statistics 
-   \end{enumerate}
-
-\subsection*{Database Tables}
-\index[general]{Database Tables }
-\index[general]{Tables!Database }
-\addcontentsline{toc}{subsection}{Database Tables}
-
-\addcontentsline{lot}{table}{Filename Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf Filename  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{l| }{\bf Data Type }
-& \multicolumn{1}{l| }{\bf Remark  } \\
- \hline 
-{FilenameId } & {integer  } & {Primary Key  } \\
- \hline 
-{Name  } & {Blob  } & {Filename }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Filename} table shown above contains the name of each file backed up
-with the path removed. If different directories or machines contain the same
-filename, only one copy will be saved in this table. 
-
-\ 
-
-\addcontentsline{lot}{table}{Path Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf Path  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{PathId  } & {integer  } & {Primary Key  } \\
- \hline 
-{Path  } & {Blob } & {Full Path }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Path} table contains shown above the path or directory names of all
-directories on the system or systems. The filename and any MSDOS disk name are
-stripped off. As with the filename, only one copy of each directory name is
-kept regardless of how many machines or drives have the same directory. These
-path names should be stored in Unix path name format. 
-
-Some simple testing on a Linux file system indicates that separating the
-filename and the path may be more complication than is warranted by the space
-savings. For example, this system has a total of 89,097 files, 60,467 of which
-have unique filenames, and there are 4,374 unique paths. 
-
-Finding all those files and doing two stats() per file takes an average wall
-clock time of 1 min 35 seconds on a 400MHz machine running RedHat 6.1 Linux. 
-
-Finding all those files and putting them directly into a MySQL database with
-the path and filename defined as TEXT, which is variable length up to 65,535
-characters takes 19 mins 31 seconds and creates a 27.6 MByte database. 
-
-Doing the same thing, but inserting them into Blob fields with the filename
-indexed on the first 30 characters and the path name indexed on the 255 (max)
-characters takes 5 mins 18 seconds and creates a 5.24 MB database. Rerunning
-the job (with the database already created) takes about 2 mins 50 seconds. 
-
-Running the same as the last one (Path and Filename Blob), but Filename
-indexed on the first 30 characters and the Path on the first 50 characters
-(linear search done there after) takes 5 mins on the average and creates a 3.4
-MB database. Rerunning with the data already in the DB takes 3 mins 35
-seconds. 
-
-Finally, saving only the full path name rather than splitting the path and the
-file, and indexing it on the first 50 characters takes 6 mins 43 seconds and
-creates a 7.35 MB database. 
-
-\ 
-
-\addcontentsline{lot}{table}{File Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf File  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{FileId  } & {integer  } & {Primary Key  } \\
- \hline 
-{FileIndex  } & {integer  } & {The sequential file number in the Job  } \\
- \hline 
-{JobId  } & {integer  } & {Link to Job Record  } \\
- \hline 
-{PathId  } & {integer  } & {Link to Path Record  } \\
- \hline 
-{FilenameId  } & {integer  } & {Link to Filename Record  } \\
- \hline 
-{MarkId  } & {integer  } & {Used to mark files during Verify Jobs  } \\
- \hline 
-{LStat  } & {tinyblob } & {File attributes in base64 encoding  } \\
- \hline 
-{MD5  } & {tinyblob } & {MD5 signature in base64 encoding }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf File} table shown above contains one entry for each file backed up by
-Bacula. Thus a file that is backed up multiple times (as is normal) will have
-multiple entries in the File table. This will probably be the table with the
-most number of records. Consequently, it is essential to keep the size of this
-record to an absolute minimum. At the same time, this table must contain all
-the information (or pointers to the information) about the file and where it
-is backed up. Since a file may be backed up many times without having changed,
-the path and filename are stored in separate tables. 
-
-This table contains by far the largest amount of information in the Catalog
-database, both from the stand point of number of records, and the stand point
-of total database size. As a consequence, the user must take care to
-periodically reduce the number of File records using the {\bf retention}
-command in the Console program. 
-
-\ 
-
-\addcontentsline{lot}{table}{Job Table Layout}
-\begin{longtable}{|l|l|p{2.5in}|}
- \hline 
-\multicolumn{3}{|l| }{\bf Job  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{JobId  } & {integer  } & {Primary Key  } \\
- \hline 
-{Job  } & {tinyblob } & {Unique Job Name  } \\
- \hline 
-{Name  } & {tinyblob } & {Job Name  } \\
- \hline 
-{PurgedFiles  } & {tinyint  } & {Used by Bacula for purging/retention periods 
-} \\
- \hline 
-{Type  } & {binary(1)  } & {Job Type: Backup, Copy, Clone, Archive, Migration 
-} \\
- \hline 
-{Level  } & {binary(1)  } & {Job Level  } \\
- \hline 
-{ClientId  } & {integer  } & {Client index  } \\
- \hline 
-{JobStatus  } & {binary(1)  } & {Job Termination Status  } \\
- \hline 
-{SchedTime  } & {datetime } & {Time/date when Job scheduled  } \\
- \hline 
-{StartTime  } & {datetime } & {Time/date when Job started  } \\
- \hline 
-{EndTime  } & {datetime } & {Time/date when Job ended  } \\
- \hline 
-{JobTDate  } & {bigint  } & {Start day in Unix format but 64 bits;  used for
-Retention period.  } \\
- \hline 
-{VolSessionId  } & {integer  } & {Unique Volume Session ID  } \\
- \hline 
-{VolSessionTime } & {integer  } & {Unique Volume Session Time  } \\
- \hline 
-{JobFiles  } & {integer  } & {Number of files saved in Job  } \\
- \hline 
-{JobBytes  } & {bigint  } & {Number of bytes saved in Job  } \\
- \hline 
-{JobErrors  } & {integer  } & {Number of errors during Job  } \\
- \hline 
-{JobMissingFiles } & {integer } & {Number of files not saved (not yet used)  }
-\\
- \hline 
-{PoolId  } & {integer  } & {Link to Pool Record  } \\
- \hline 
-{FileSetId  } & {integer  } & {Link to FileSet Record  } \\
- \hline 
-{PurgedFiles  } & {tiny integer  } & {Set when all File records purged  } \\
- \hline 
-{HasBase  } & {tiny integer  } & {Set when Base Job run }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Job} table contains one record for each Job run by Bacula. Thus
-normally, there will be one per day per machine added to the database. Note,
-the JobId is used to index Job records in the database, and it often is shown
-to the user in the Console program. However, care must be taken with its use
-as it is not unique from database to database. For example, the user may have
-a database for Client data saved on machine Rufus and another database for
-Client data saved on machine Roxie. In this case, the two database will each
-have JobIds that match those in another database. For a unique reference to a
-Job, see Job below. 
-
-The Name field of the Job record corresponds to the Name resource record given
-in the Director's configuration file. Thus it is a generic name, and it will
-be normal to find many Jobs (or even all Jobs) with the same Name. 
-
-The Job field contains a combination of the Name and the schedule time of the
-Job by the Director. Thus for a given Director, even with multiple Catalog
-databases, the Job will contain a unique name that represents the Job. 
-
-For a given Storage daemon, the VolSessionId and VolSessionTime form a unique
-identification of the Job. This will be the case even if multiple Directors
-are using the same Storage daemon. 
-
-The Job Type (or simply Type) can have one of the following values: 
-
-\addcontentsline{lot}{table}{Job Types}
-\begin{longtable}{|l|l|}
- \hline 
-\multicolumn{1}{|c| }{\bf Value  } & \multicolumn{1}{c| }{\bf Meaning  } \\
- \hline 
-{B  } & {Backup Job  } \\
- \hline 
-{V  } & {Verify Job  } \\
- \hline 
-{R  } & {Restore Job  } \\
- \hline 
-{C  } & {Console program (not in database)  } \\
- \hline 
-{D  } & {Admin Job  } \\
- \hline 
-{A  } & {Archive Job (not implemented) }
-\\ \hline 
-
-\end{longtable}
-
-The JobStatus field specifies how the job terminated, and can be one of the
-following: 
-
-\addcontentsline{lot}{table}{Job Statuses}
-\begin{longtable}{|l|l|}
- \hline 
-\multicolumn{1}{|c| }{\bf Value  } & \multicolumn{1}{c| }{\bf Meaning  } \\
- \hline 
-{C  } & {Created but not yet running  } \\
- \hline 
-{R  } & {Running  } \\
- \hline 
-{B  } & {Blocked  } \\
- \hline 
-{T  } & {Terminated normally  } \\
- \hline 
-{E  } & {Terminated in Error  } \\
- \hline 
-{e  } & {Non-fatal error  } \\
- \hline 
-{f  } & {Fatal error  } \\
- \hline 
-{D  } & {Verify Differences  } \\
- \hline 
-{A  } & {Canceled by the user  } \\
- \hline 
-{F  } & {Waiting on the File daemon  } \\
- \hline 
-{S  } & {Waiting on the Storage daemon  } \\
- \hline 
-{m  } & {Waiting for a new Volume to be mounted  } \\
- \hline 
-{M  } & {Waiting for a Mount  } \\
- \hline 
-{s  } & {Waiting for Storage resource  } \\
- \hline 
-{j  } & {Waiting for Job resource  } \\
- \hline 
-{c  } & {Waiting for Client resource  } \\
- \hline 
-{d  } & {Wating for Maximum jobs  } \\
- \hline 
-{t  } & {Waiting for Start Time  } \\
- \hline 
-{p  } & {Waiting for higher priority job to finish }
-\\ \hline 
-
-\end{longtable}
-
-\ 
-
-\addcontentsline{lot}{table}{File Sets Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf FileSet  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{FileSetId  } & {integer  } & {Primary Key  } \\
- \hline 
-{FileSet  } & {tinyblob  } & {FileSet name  } \\
- \hline 
-{MD5  } & {tinyblob  } & {MD5 checksum of FileSet  } \\
- \hline 
-{CreateTime  } & {datetime  } & {Time and date Fileset created }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf FileSet} table contains one entry for each FileSet that is used. The
-MD5 signature is kept to ensure that if the user changes anything inside the
-FileSet, it will be detected and the new FileSet will be used. This is
-particularly important when doing an incremental update. If the user deletes a
-file or adds a file, we need to ensure that a Full backup is done prior to the
-next incremental. 
-
-\ 
-
-\addcontentsline{lot}{table}{JobMedia Table Layout}
-\begin{longtable}{|l|l|p{2.5in}|}
- \hline 
-\multicolumn{3}{|l| }{\bf JobMedia  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{JobMediaId  } & {integer  } & {Primary Key  } \\
- \hline 
-{JobId  } & {integer  } & {Link to Job Record  } \\
- \hline 
-{MediaId  } & {integer  } & {Link to Media Record  } \\
- \hline 
-{FirstIndex  } & {integer  } & {The index (sequence number)  of the first file
-written for this Job to the Media  } \\
- \hline 
-{LastIndex  } & {integer  } & {The index  of the last file written for this
-Job to the Media  } \\
- \hline 
-{StartFile  } & {integer  } & {The physical media (tape)  file number of the
-first block written for this Job  } \\
- \hline 
-{EndFile  } & {integer  } & {The physical media (tape)  file number of the
-last block written for this Job  } \\
- \hline 
-{StartBlock  } & {integer  } & {The number of the first  block written for
-this Job  } \\
- \hline 
-{EndBlock  } & {integer  } & {The number of the last  block written for this
-Job  } \\
- \hline 
-{VolIndex  } & {integer  } & {The Volume use sequence number  within the Job }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf JobMedia} table contains one entry for each volume written for the
-current Job. If the Job spans 3 tapes, there will be three JobMedia records,
-each containing the information to find all the files for the given JobId on
-the tape. 
-
-\ 
-
-\addcontentsline{lot}{table}{Media Table Layout}
-\begin{longtable}{|l|l|p{2.4in}|}
- \hline 
-\multicolumn{3}{|l| }{\bf Media  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{MediaId  } & {integer } & {Primary Key  } \\
- \hline 
-{VolumeName  } & {tinyblob } & {Volume name  } \\
- \hline 
-{Slot  } & {integer } & {Autochanger Slot number or zero  } \\
- \hline 
-{PoolId  } & {integer } & {Link to Pool Record  } \\
- \hline 
-{MediaType  } & {tinyblob } & {The MediaType supplied by the user  } \\
- \hline 
-{FirstWritten  } & {datetime } & {Time/date when first written  } \\
- \hline 
-{LastWritten  } & {datetime } & {Time/date when last written  } \\
- \hline 
-{LabelDate  } & {datetime } & {Time/date when tape labeled  } \\
- \hline 
-{VolJobs  } & {integer  } & {Number of jobs written to this media  } \\
- \hline 
-{VolFiles  } & {integer  } & {Number of files written to this media  } \\
- \hline 
-{VolBlocks  } & {integer  } & {Number of blocks written to this media  } \\
- \hline 
-{VolMounts  } & {integer  } & {Number of time media mounted  } \\
- \hline 
-{VolBytes  } & {bigint  } & {Number of bytes saved in Job  } \\
- \hline 
-{VolErrors  } & {integer  } & {Number of errors during Job  } \\
- \hline 
-{VolWrites  } & {integer  } & {Number of writes to media  } \\
- \hline 
-{MaxVolBytes  } & {bigint } & {Maximum bytes to put on this media  } \\
- \hline 
-{VolCapacityBytes } & {bigint } & {Capacity estimate for this volume  } \\
- \hline 
-{VolStatus  } & {enum  } & {Status of media: Full, Archive, Append, Recycle, 
-Read-Only, Disabled, Error, Busy  } \\
- \hline 
-{Recycle  } & {tinyint  } & {Whether or not Bacula can recycle the Volumes:
-Yes, No  } \\
- \hline 
-{VolRetention  } & {bigint  } & {64 bit seconds until expiration  } \\
- \hline 
-{VolUseDuration  } & {bigint  } & {64 bit seconds volume can be used  } \\
- \hline 
-{MaxVolJobs  } & {integer  } & {maximum jobs to put on Volume  } \\
- \hline 
-{MaxVolFiles  } & {integer  } & {maximume EOF marks to put on Volume }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Volume} table (internally referred to as the Media table) contains
-one entry for each volume, that is each tape, cassette (8mm, DLT, DAT, ...),
-or file on which information is or was backed up. There is one Volume record
-created for each of the NumVols specified in the Pool resource record. 
-
-\ 
-
-\addcontentsline{lot}{table}{Pool Table Layout}
-\begin{longtable}{|l|l|p{2.4in}|}
- \hline 
-\multicolumn{3}{|l| }{\bf Pool  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name  } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{PoolId  } & {integer  } & {Primary Key  } \\
- \hline 
-{Name  } & {Tinyblob } & {Pool Name  } \\
- \hline 
-{NumVols  } & {Integer  } & {Number of Volumes in the Pool  } \\
- \hline 
-{MaxVols  } & {Integer  } & {Maximum Volumes in the Pool  } \\
- \hline 
-{UseOnce  } & {tinyint  } & {Use volume once  } \\
- \hline 
-{UseCatalog  } & {tinyint  } & {Set to use catalog  } \\
- \hline 
-{AcceptAnyVolume } & {tinyint  } & {Accept any volume from Pool  } \\
- \hline 
-{VolRetention  } & {bigint  } & {64 bit seconds to retain volume  } \\
- \hline 
-{VolUseDuration  } & {bigint  } & {64 bit seconds volume can be used  } \\
- \hline 
-{MaxVolJobs  } & {integer  } & {max jobs on volume  } \\
- \hline 
-{MaxVolFiles  } & {integer  } & {max EOF marks to put on Volume  } \\
- \hline 
-{MaxVolBytes  } & {bigint  } & {max bytes to write on Volume  } \\
- \hline 
-{AutoPrune  } & {tinyint  } & {yes|no for autopruning  } \\
- \hline 
-{Recycle  } & {tinyint  } & {yes|no for allowing auto recycling of Volume  }
-\\
- \hline 
-{PoolType  } & {enum  } & {Backup, Copy, Cloned, Archive, Migration  } \\
- \hline 
-{LabelFormat  } & {Tinyblob } & {Label format }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Pool} table contains one entry for each media pool controlled by
-Bacula in this database. One media record exists for each of the NumVols
-contained in the Pool. The PoolType is a Bacula defined keyword. The MediaType
-is defined by the administrator, and corresponds to the MediaType specified in
-the Director's Storage definition record. The CurrentVol is the sequence
-number of the Media record for the current volume. 
-
-\ 
-
-\addcontentsline{lot}{table}{Client Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf Client  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{ClientId  } & {integer  } & {Primary Key  } \\
- \hline 
-{Name  } & {TinyBlob  } & {File Services Name  } \\
- \hline 
-{UName  } & {TinyBlob  } & {uname -a from Client (not yet used)  } \\
- \hline 
-{AutoPrune  } & {tinyint  } & {yes|no for autopruning  } \\
- \hline 
-{FileRetention  } & {bigint  } & {64 bit seconds to retain Files  } \\
- \hline 
-{JobRetention  } & {bigint  } & {64 bit seconds to retain Job }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Client} table contains one entry for each machine backed up by Bacula
-in this database. Normally the Name is a fully qualified domain name. 
-
-\ 
-
-\addcontentsline{lot}{table}{Unsaved Files Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf UnsavedFiles  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{UnsavedId  } & {integer  } & {Primary Key  } \\
- \hline 
-{JobId  } & {integer  } & {JobId corresponding to this record  } \\
- \hline 
-{PathId  } & {integer  } & {Id of path  } \\
- \hline 
-{FilenameId  } & {integer  } & {Id of filename }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf UnsavedFiles} table contains one entry for each file that was not
-saved. Note! This record is not yet implemented. 
-
-\ 
-
-\addcontentsline{lot}{table}{Counter Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf Counter  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{Counter  } & {tinyblob  } & {Counter name  } \\
- \hline 
-{MinValue  } & {integer } & {Start/Min value for counter  } \\
- \hline 
-{MaxValue  } & {integer } & {Max value for counter  } \\
- \hline 
-{CurrentValue  } & {integer } & {Current counter value  } \\
- \hline 
-{WrapCounter  } & {tinyblob  } & {Name of another counter }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Counter} table contains one entry for each permanent counter defined
-by the user. 
-
-\ 
-
-\addcontentsline{lot}{table}{Version Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf Version  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{VersionId  } & {integer  } & {Primary Key }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf Version} table defines the Bacula database version number. Bacula
-checks this number before reading the database to ensure that it is compatible
-with the Bacula binary file. 
-
-\ 
-
-\addcontentsline{lot}{table}{Base Files Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline 
-\multicolumn{3}{|l| }{\bf BaseFiles  } \\
- \hline 
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type 
-} & \multicolumn{1}{c| }{\bf Remark  } \\
- \hline 
-{BaseId  } & {integer  } & {Primary Key  } \\
- \hline 
-{BaseJobId  } & {integer  } & {JobId of Base Job  } \\
- \hline 
-{JobId  } & {integer  } & {Reference to Job  } \\
- \hline 
-{FileId  } & {integer  } & {Reference to File  } \\
- \hline 
-{FileIndex  } & {integer  } & {File Index number }
-\\ \hline 
-
-\end{longtable}
-
-The {\bf BaseFiles} table contains all the File references for a particular
-JobId that point to a Base file -- i.e. they were previously saved and hence
-were not saved in the current JobId but in BaseJobId under FileId. FileIndex
-is the index of the file, and is used for optimization of Restore jobs to
-prevent the need to read the FileId record when creating the in memory tree.
-This record is not yet implemented. 
-
-\ 
-
-\subsubsection*{MySQL Table Definition}
-\index[general]{MySQL Table Definition }
-\index[general]{Definition!MySQL Table }
-\addcontentsline{toc}{subsubsection}{MySQL Table Definition}
-
-The commands used to create the MySQL tables are as follows: 
-
-\footnotesize
-\begin{verbatim}
-USE bacula;
-CREATE TABLE Filename (
-  FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-  Name BLOB NOT NULL,
-  PRIMARY KEY(FilenameId),
-  INDEX (Name(30))
-  );
-CREATE TABLE Path (
-   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Path BLOB NOT NULL,
-   PRIMARY KEY(PathId),
-   INDEX (Path(50))
-   );
-CREATE TABLE File (
-   FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   FileIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
-   MarkId INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   LStat TINYBLOB NOT NULL,
-   MD5 TINYBLOB NOT NULL,
-   PRIMARY KEY(FileId),
-   INDEX (JobId),
-   INDEX (PathId),
-   INDEX (FilenameId)
-   );
-CREATE TABLE Job (
-   JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Job TINYBLOB NOT NULL,
-   Name TINYBLOB NOT NULL,
-   Type BINARY(1) NOT NULL,
-   Level BINARY(1) NOT NULL,
-   ClientId INTEGER NOT NULL REFERENCES Client,
-   JobStatus BINARY(1) NOT NULL,
-   SchedTime DATETIME NOT NULL,
-   StartTime DATETIME NOT NULL,
-   EndTime DATETIME NOT NULL,
-   JobTDate BIGINT UNSIGNED NOT NULL,
-   VolSessionId INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   JobFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   JobBytes BIGINT UNSIGNED NOT NULL,
-   JobErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
-   FileSetId INTEGER UNSIGNED NOT NULL REFERENCES FileSet,
-   PurgedFiles TINYINT NOT NULL DEFAULT 0,
-   HasBase TINYINT NOT NULL DEFAULT 0,
-   PRIMARY KEY(JobId),
-   INDEX (Name(128))
-   );
-CREATE TABLE FileSet (
-   FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   FileSet TINYBLOB NOT NULL,
-   MD5 TINYBLOB NOT NULL,
-   CreateTime DATETIME NOT NULL,
-   PRIMARY KEY(FileSetId)
-   );
-CREATE TABLE JobMedia (
-   JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
-   FirstIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   LastIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   StartFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   StartBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   PRIMARY KEY(JobMediaId),
-   INDEX (JobId, MediaId)
-   );
-CREATE TABLE Media (
-   MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   VolumeName TINYBLOB NOT NULL,
-   Slot INTEGER NOT NULL DEFAULT 0,
-   PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
-   MediaType TINYBLOB NOT NULL,
-   FirstWritten DATETIME NOT NULL,
-   LastWritten DATETIME NOT NULL,
-   LabelDate DATETIME NOT NULL,
-   VolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolBlocks INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolMounts INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   VolErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolWrites INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   VolCapacityBytes BIGINT UNSIGNED NOT NULL,
-   VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
-   Recycle TINYINT NOT NULL DEFAULT 0,
-   VolRetention BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   VolUseDuration BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   InChanger TINYINT NOT NULL DEFAULT 0,
-   MediaAddressing TINYINT NOT NULL DEFAULT 0,
-   VolReadTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   VolWriteTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
-   PRIMARY KEY(MediaId),
-   INDEX (PoolId)
-   );
-CREATE TABLE Pool (
-   PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   NumVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   MaxVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   UseOnce TINYINT NOT NULL,
-   UseCatalog TINYINT NOT NULL,
-   AcceptAnyVolume TINYINT DEFAULT 0,
-   VolRetention BIGINT UNSIGNED NOT NULL,
-   VolUseDuration BIGINT UNSIGNED NOT NULL,
-   MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED NOT NULL,
-   AutoPrune TINYINT DEFAULT 0,
-   Recycle TINYINT DEFAULT 0,
-   PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
-   LabelFormat TINYBLOB,
-   Enabled TINYINT DEFAULT 1,
-   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   UNIQUE (Name(128)),
-   PRIMARY KEY (PoolId)
-   );
-CREATE TABLE Client (
-   ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   Uname TINYBLOB NOT NULL,       /* full uname -a of client */
-   AutoPrune TINYINT DEFAULT 0,
-   FileRetention BIGINT UNSIGNED NOT NULL,
-   JobRetention  BIGINT UNSIGNED NOT NULL,
-   UNIQUE (Name(128)),
-   PRIMARY KEY(ClientId)
-   );
-CREATE TABLE BaseFiles (
-   BaseId INTEGER UNSIGNED AUTO_INCREMENT,
-   BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
-   FileIndex INTEGER UNSIGNED,
-   PRIMARY KEY(BaseId)
-   );
-CREATE TABLE UnsavedFiles (
-   UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
-   PRIMARY KEY (UnsavedId)
-   );
-CREATE TABLE Version (
-   VersionId INTEGER UNSIGNED NOT NULL
-   );
--- Initialize Version
-INSERT INTO Version (VersionId) VALUES (7);
-CREATE TABLE Counters (
-   Counter TINYBLOB NOT NULL,
-   MinValue INTEGER,
-   MaxValue INTEGER,
-   CurrentValue INTEGER,
-   WrapCounter TINYBLOB NOT NULL,
-   PRIMARY KEY (Counter(128))
-   );
-\end{verbatim}
-\normalsize
index fe84215875d71d271dd0a67ce27f26523d5892ec..71181160de83db2acb2054bb392c02718b8d32f1 100644 (file)
@@ -324,7 +324,10 @@ FAQ for how to do so.
    For an example of how to backup  to files, please see the  
    \ilink{Pruning Example}{PruningExample} in the  Recycling
    chapter of this manual. Also, there is a whole chapter  devoted to 
-   \ilink{Backing Up to Disk}{_ChapterStart39}.  
+   \ilink{Basic Volume Management}{_ChapterStart39}.  This chapter was
+   originally written to explain how to write to disk, but was expanded
+   to include volume management. It is, however, still quite a good
+   chapter to read.
 
 \label{bigfiles}
 \item [Can Bacula Backup and Restore Files Greater than 2 Gigabytes in
index 1c6f3f0c0cc733bbfb2408aaca58f20c64a5836f..2fa9382e06034a0e0373400c58cd5052dc41fe0c 100644 (file)
@@ -65,7 +65,7 @@ daemon  may put its status files. This directory should be used only  by {\bf
 Bacula}, but may be shared by other Bacula daemons. This  record is required  
 
 \item [Pid Directory = \lt{}Directory\gt{}]
-   \index[dir]{Pid Directory  }
+   \index[fd]{Pid Directory  }
    This directive  is mandatory and specifies a directory in which the Director 
 may put its process Id file files. The process Id file is used to  shutdown
 Bacula and to prevent multiple copies of  Bacula from running simultaneously. 
@@ -78,7 +78,9 @@ not installing Bacula in the  system directories, you can use the {\bf Working
 Directory} as  defined above. 
 
 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
-   \index[dir]{Heartbeat Interval  }
+   \index[fd]{Heartbeat Interval  }
+   \index[general]{Heartbeat Interval}
+   \index[general]{Broken pipe}
    This record defines an interval of time.  For each heartbeat that the
    File daemon receives from the Storage daemon, it will forward it to the
    Director.  In addition, if no heartbeat has been received from the
@@ -86,11 +88,12 @@ Directory} as  defined above.
    signal to the Director and to the Storage daemon to keep the channels
    active.  The default interval is zero which disables the heartbeat.
    This feature is particularly useful if you have a router such as 3Com
-   that does not follow Internet standards and times out an inactive
-   connection after a short duration.
+   that does not follow Internet standards and times out a valid    
+   connection after a short duration despite the fact that keepalive is
+   set. This usually results in a broken pipe error message.
 
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
-   \index[dir]{Maximum Concurrent Jobs  }
+   \index[fd]{Maximum Concurrent Jobs  }
    where \lt{}number\gt{} is the maximum number of Jobs that should run
    concurrently.  The default is set to 2, but you may set it to a larger
    number.  Each contact from the Director (e.g.  status request, job start
index 1d2c0ed7846f0c014ba503371772f9eacc6f16e7..9da8b9d7902e18ca315e3971b830cd73b33838ad 100644 (file)
@@ -116,14 +116,14 @@ record  of all Volumes used, all Jobs run, and all Files saved, permitting
 efficicient restoration and Volume management.  Bacula currently supports
 three different databases, MySQL,  PostgreSQL, and SQLite, one of which must
 be chosen when building  {\bf Bacula}. There also exists an Internal database,
-but it is no  longer supported.  
+but it is no longer supported.  
 
 The three SQL databases currently supported (MySQL, PostgreSQL or SQLite) 
 provide quite a number of features,  including rapid indexing, arbitrary
 queries, and security. Although  we plan to support other major SQL databases,
 the current  Bacula implementation interfaces only to MySQL, PostgreSQL and
-SQLite.  For more details see the 
-\ilink{Catalog Services Design Document}{_ChapterStart30}.  
+SQLite.  For the technical and porting details see the Catalog Services
+Design Document in the developer's documented.
 
 The RPMs for MySQL and PostgreSQL ship as part of the Linux RedHat 
 and several other releases, or building the rpms from the source is 
index 4a566005feb399143648d1185dab2294d66eec7c..e7134a0faf2b915f0c93e8c5c5900b742c53641f 100644 (file)
@@ -364,11 +364,14 @@ differences between systems, I can no longer afford to support it.
 \addcontentsline{toc}{subsection}{What Database to Use?}
 
 Before building Bacula you need to decide if you want to use SQLite, MySQL, or
-PostgreSQL. If you are not already running MySQL or PostgreSQL, we recommend
-that you start by using SQLite. This will greatly simplify the setup for you
+PostgreSQL. If you are not already running MySQL or PostgreSQL, you might
+want to start by testing with SQLite. This will greatly simplify the setup for you
 because SQLite is compiled into Bacula an requires no administration. It
 performs well and is suitable for small to medium sized installations (maximum
-10-20 machines). 
+10-20 machines). However, we should note that a number of users have
+had unexplained database corruption with SQLite. For that reason, we
+recommend that you install either MySQL or PostgreSQL for production
+work.
 
 If you wish to use MySQL as the Bacula catalog, please see the 
 \ilink{Installing and Configuring MySQL}{_ChapterStart} chapter of
@@ -540,6 +543,16 @@ customize your installation.
    This provides an explicit  path to the PostgreSQL libraries if Bacula cannot
    find it by  default.  
 
+\item [ \verb?--?with-python=\lt{}path\gt{}]
+   \index[fd]{\verb{--{with-python }
+   This option enables Bacula support for Python. If no path is 
+   supplied, configure will search the     
+   standard library locations for Python 2.2, 2.3, or 2.4. If it cannot
+   find the library, you will need to supply a path to your Python
+   library directory.  Please see the 
+   \ilink{Python chapter}{_ChapterStart60} for the details of using
+   Python scripting.
+
 \item [ \verb?--?enable-conio]
    \index[fd]{\verb{--{enable-conio }
    Tells Bacula to enable building the  small, light weight readline replacement
index 735d978abf6a691eea6d3e6e84f16e85642911a9..06d05b2ad8eacba94cb5aee5b7d2f3f781110088 100644 (file)
 If you use the ./configure \verb{--{with-mysql=mysql-directory statement for
 configuring {\bf Bacula}, you will need MySQL version 3.23.53 or later
 installed in the {\bf mysql-directory}.
-Bacula has been tested on MySQL version 4.1.12 and works fine.           
+Bacula has been tested on MySQL version 4.1.12 and works providing
+you are running it in the default installation that is compatible
+with MySQL 3.23.x.  If you are using one of the new modes such
+as ANSI/ISO compatibility, you may experience problems.
+
 If MySQL is installed in the standard system location, you need only enter
 {\bf \verb{--{with-mysql} since the configure program will search all the
 standard locations.  If you install MySQL in your home directory or some
@@ -27,7 +31,7 @@ it on our machines. Please note that our configuration leaves MySQL without
 any user passwords. This may be an undesirable situation if you have other
 users on your system. 
 
-Please note that as of Bacula version 1.31, the thread safe version of the
+Beginning with Bacula version 1.31, the thread safe version of the
 MySQL client library is used, and hence you must add the {\bf
 \verb{--{enable-thread-safe-client} option to the {\bf ./configure} as shown below: 
 
@@ -236,3 +240,14 @@ LDFLAGS="-lssl -lcyrpto" \
       <your-options>
 \end{verbatim}
 \normalsize
+
+\subsection*{Upgrading MySQL}
+\index[general]{Upgrading MySQL }
+\index[general]{Upgrading!MySQL }
+\addcontentsline{toc}{subsection}{Upgrading MySQL}
+If you upgrade MySQL, you must reconfigure, rebuild, and re-install 
+Bacula otherwise you are likely to get bizarre failures.  If you
+install from rpms and you upgrade MySQL, you must also rebuild Bacula.
+You can do so by rebuilding from the source rpm. To do so, you may need
+eo modify the bacula.spec file to account for the new MySQL version.
+
index d5bc08479aa440f277d5aa69502baaaf111ffaeb..e8af3fea23e3444adc776925e0e2e370d8b2b912 100644 (file)
@@ -268,11 +268,21 @@ SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool));
 
 \item At this point, start up Bacula, verify your volume library and  perform
    a test backup to make sure everything is working  properly. 
-   \end{enumerate}
+\end{enumerate}
+
+\subsection*{Upgrading PostgreSQL}
+\index[general]{Upgrading PostgreSQL }
+\index[general]{Upgrading!PostgreSQL }
+\addcontentsline{toc}{subsection}{Upgrading PostgreSQL}
+If you upgrade PostgreSQL, you must reconfigure, rebuild, and re-install 
+Bacula otherwise you are likely to get bizarre failures.  If you
+to modify the bacula.spec file to account for the new PostgreSQL version.
+You can do so by rebuilding from the source rpm. To do so, you may need
+install from rpms and you upgrade PostgreSQL, you must also rebuild Bacula.
+
 
 \subsection*{Credits}
 \index[general]{Credits }
 \addcontentsline{toc}{subsection}{Credits}
-
 Many thanks to Dan Langille for writing the PostgreSQL driver. This will
 surely become the most popular database that Bacula supports. 
index c0adf1e361c2f22712aa46f74555bee4e5bfb2e5..4d599a3b26760802f587ed01a890dd10f1d1aae4 100644 (file)
@@ -23,7 +23,7 @@ you want, based on the current state of Bacula.
 \addcontentsline{toc}{subsection}{Python Configuration}
 
 Python must be enabled during the configuration process by adding
-a \verb?--?enable-python, and possibly specifying an alternate
+a \verb?--?with-python, and possibly specifying an alternate
 directory if your Python is not installed in a standard system
 location. If you are using RPMs you will need the python-devel package
 installed.
index 6eae1088d479eb5a1d7d00673c1b4e2798a68b7c..b3f757e3e3172681f321e6686115e8e0d011f9b0 100644 (file)
@@ -40,17 +40,16 @@ need them both loaded. On RedHat systems,  the C++ compiler is part of the
 \item The wxWidgets Console program is developed and tested with the latest 
    stable ANSI (not Unicode) version of 
    \elink{wxWidgets}{http://www.wxwidgets.org/} (2.6.0).  It works fine with the
-Windows and GTK+-2.x version of wxWidgets, and should  also work on other
-platforms supported by wxWidgets. 
+   Windows and GTK+-2.x version of wxWidgets, and should  also work on other
+   platforms supported by wxWidgets. 
 \item The Tray Monitor program is developed for GTK+-2.x. It needs  Gnome less
    or equal to 2.2, KDE greater or equal to 3.1 or any window manager supporting
    the  
-\elink{ FreeDesktop system tray
-standard}{http://www.freedesktop.org/Standards/systemtray-spec}. 
+   \elink{ FreeDesktop system tray
+   standard}{http://www.freedesktop.org/Standards/systemtray-spec}. 
 \item If you want to enable command line editing and history, you will  need
    to have /usr/include/termcap.h and either the termcap or the  ncurses library
    loaded (libtermcap-devel or ncurses-devel). 
 \item If you want to use DVD as backup medium, you will need to download  and
-   install the  
-   \elink{dvd+rw-tools}{http://fy.chalmers.se/~appro/linux/DVD+RW/}. 
+   install the \elink{dvd+rw-tools}{http://fy.chalmers.se/~appro/linux/DVD+RW/}. 
 \end{itemize}
index ed6d5d0c7bfcb8785ed24544bbac2e5661b5db18..3982b77e5b7e5e373f34a4b0e894be21da5321a0 100644 (file)
@@ -14,9 +14,9 @@
 I}
 
 If you use the {\bf ./configure \verb{--{with-sqlite} statement for configuring {\bf
-Bacula}, you will need SQLite version 2.2.3 or later installed. Our standard
+Bacula}, you will need SQLite version 2.8.16 or later installed. Our standard
 location (for the moment) for SQLite is in the dependency package {\bf
-depkgs/sqlite-2.2.3}. Please note that the version will be updated as new
+depkgs/sqlite-2.8.16}. Please note that the version will be updated as new
 versions are available and tested. 
 
 Installing and Configuring is quite easy. 
index 2e8f1f33ea34e315dad3217cb013ebfc4c18f41e..662d7d135fe02e051c99ffd5afb92348ba57fadd 100644 (file)
@@ -82,12 +82,16 @@ have one and only one Storage resource definition.
 
 \item [Heartbeat Interval = \lt{}time-interval\gt{}]
    \index[sd]{Heartbeat Interval  }
+   \index[general]{Heartbeat Interval}
+   \index[general]{Broken pipe}
    This directive defines an interval of time.  When the Storage daemon is
    waiting for the operator to mount a tape, each time interval, it will
    send a heartbeat signal to the File daemon.  The default interval is
    zero which disables the heartbeat.  This feature is particularly useful
    if you have a router such as 3Com that does not follow Internet
-   standards and times out an inactive connection after a short duration.
+   standards and times out an valid connection after a short duration 
+   despite the fact that keepalive is set. This usually results
+   in a broken pipe error message.
 
 \item [Maximum Concurrent Jobs = \lt{}number\gt{}]
    \index[sd]{Maximum Concurrent Jobs  }
@@ -729,9 +733,9 @@ The default is no limit.
 \item [Spool Directory = {\it directory}]
    \index[sd]{Spool Directory  }
    specifies the name of the directory to be used to store  the spool files for
-this device. This directory is also used to store  temporary part files when
-writing to a device that requires mount (DVD).  The default is to use the
-working directory. 
+   this device. This directory is also used to store  temporary part files when
+   writing to a device that requires mount (DVD).  The default is to use the
+   working directory. 
 
 \item [Maximum Part Size = {\it bytes}]
    \index[sd]{Maximum Part Size  }
@@ -769,7 +773,7 @@ Bacula version 1.37 and later.
 
 \item [Mount Point = {\it directory}]
    \index[sd]{Mount Point  }
-   Directory where the device must be mounted. 
+   Directory where the device can be mounted. 
 
 \item [Mount Command = {\it name-string}]
    \index[sd]{Mount Command  }
@@ -781,8 +785,7 @@ Bacula version 1.37 and later.
 
 \footnotesize
 \begin{verbatim}
-Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
-    
+  Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
 \end{verbatim}
 \normalsize
 
@@ -796,8 +799,7 @@ Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
 
 \footnotesize
 \begin{verbatim}
-Unmount Command = "/bin/umount %m"
-    
+  Unmount Command = "/bin/umount %m"
 \end{verbatim}
 \normalsize
 
@@ -813,11 +815,17 @@ Unmount Command = "/bin/umount %m"
 
 \footnotesize
 \begin{verbatim}
-Write Part Command = "/path/dvd-writepart %n %a %v"
-    
+  Write Part Command = "/path/dvd-writepart %n %a %v"
 \end{verbatim}
 \normalsize
 
+  Where {\bf /path} is the path to your scripts install directory, and
+  dvd-writepart is the Bacula supplied script file.  
+  This command will already be present, but commented out,
+  in the default bacula-sd.conf file. To use it, simply remove
+  the comment (#) symbol.
+
+
 \item [Free Space Command = {\it name-string}]
    \index[sd]{Free Space Command  }
    Command that must be executed to check how much free space is left on the 
@@ -830,16 +838,20 @@ Write Part Command = "/path/dvd-writepart %n %a %v"
 
 \footnotesize
 \begin{verbatim}
-Free Space Command = "/path/dvd-freespace %n %a"
-    
+  Free Space Command = "/path/dvd-freespace %n %a"
 \end{verbatim}
 \normalsize
 
-If you want to specify your own command, please look at the code of
-dvd-freespace to see what output Bacula expects from this command.
+  Where {\bf /path} is the path to your scripts install directory, and
+  dvd-freespace is the Bacula supplied script file.
+  If you want to specify your own command, please look at the code of
+  dvd-freespace to see what output Bacula expects from this command.
+  This command will already be present, but commented out,
+  in the default bacula-sd.conf file. To use it, simply remove
+  the comment (#) symbol.
 
-If you do not set it, Bacula will expect there is always free space on the
-device. 
+  If you do not set it, Bacula will expect there is always free space on the
+  device. 
 
 \end{description}
 
index 47eab3b3624ae5f7b03c30a5abf2debd094a2237..fc876bd52f8df1d7afe887efdf5d3fe78436cf1d 100644 (file)
 \addcontentsline{toc}{subsection}{Supported Autochanger Models}
 
 I hesitate to call these ``supported'' autochangers because the only
-autochanger that I have in my possession and am able to test is the HP
-SureStore DAT40X6. All the other autochangers have been reported to work by
-Bacula users. Note, in the Capacity/Slot column below, I quote the Compressed
-capacity per tape (or Slot). 
+autochangers that I have in my possession and am able to test are the HP
+SureStore DAT40X6 and the Overland PowerLoader LTO-2.  All the other
+autochangers have been reported to work by Bacula users.  Note, in the
+Capacity/Slot column below, I quote the Compressed capacity per tape (or
+Slot).
 
 
 \addcontentsline{lot}{table}{Autochangers Known to Work with Bacula}
@@ -38,9 +39,10 @@ capacity per tape (or Slot).
  \hline {- } & {HP } & {DLT } & {A4853 DLT } & {30} & {40/70GB  } \\
  \hline {Linux } & {HP (Compaq) } & {DLT VI } & {Compaq TL-895 } & {96+4 import export} & {35/70GB  } \\
  \hline {SuSE 9.0 } & {IBM } & {LTO } & {IBM 3581 Ultrium Tape Loader } & {7} & {200/400GB  } \\
- \hline {- } & {Overland } & {LTO } & {Overland LoaderXpress LTO } & {10-19} & {100GB } \\
+ \hline {Debian} & {Overland } & {LTO } & {Overland LoaderXpress LTO/DLT8000 } & {10-19} & {40-100GB } \\
+ \hline {Fedora} & {Overland } & {LTO } & {Overland PowerLoader LTO-2 } & {10-19} & {200/400GB } \\
  \hline {FreeBSD 5.4-Stable} & {Overland} & {LTO-2} & {Overland Powerloader tape} & {17} & {100GB } \\
- \hline {- } & {Overland } & {LTO } & {Overland Neo2000 LTO } & {26-30} & {100GB  } \\
+ \hline {- } & {Overland} & {LTO } & {Overland Neo2000 LTO } & {26-30} & {100GB  } \\
  \hline {- } & {Quantum } & {?? } & {Super Loader } & {??} & {?? } \\
  \hline {FreeBSD 4.9 } & {QUALSTAR TLS-4210 (Qualstar) } & {AIT1: 36GB, AIT2: 50GB all
 uncomp } & {QUALSTAR TLS-4210 } & {12} & {AIT1: 36GB, AIT2: 50GB all uncomp  }\\
index 837f4057856448b99e9cf0f0433490d1e772c915..46ea89b1f693648e10b25a1717d7c65f0512dce1 100644 (file)
@@ -51,12 +51,15 @@ one.
 \normalsize
 
 It isn't necessary to run the autochanger part of the  test at this time,  but
-do not go past this point until the basic test succeeds. 
+do not go past this point until the basic test succeeds. If you do have 
+an autochanger, please be sure to read the
+\ilink{Autochanger chapter}{_ChapterStart18} of this manual.
+
 \item Run the btape {\bf fill} command, preferably with two volumes.  This
    can take a long time. If you have an autochanger and it  is configured, Bacula
    will automatically use it. If you do  not have it configured, you can manually
-issue the appopriate  {\bf mtx} command, or press the autochanger buttons to
-change  the tape when requested to do so. 
+   issue the appopriate  {\bf mtx} command, or press the autochanger buttons to
+   change  the tape when requested to do so. 
 \item FreeBSD users, run the {\bf tapetest} program, and make  sure your
    system is patched if necessary. See below for more  details. 
 \item Run Bacula, and backup a reasonably small directory,  say 60 Megabytes.
@@ -172,6 +175,7 @@ Usage: btape [options] device_name
        -b <file>   specify bootstrap file
        -c <file>   set configuration file to file
        -d <nn>     set debug level to nn
+       -p          proceed inspite of I/O errors
        -s          turn off signals
        -v          be verbose
        -?          print this message.
@@ -305,6 +309,16 @@ Host: scsi2 Channel: 00 Id: 04 Lun: 00
 \end{verbatim}
 \normalsize
 
+The above represents first an autochanger and second a simple
+tape drive. The HP changer (the first entry) uses the same SCSI channel
+for data and for control, so in Bacula, you would use: 
+\footnotesize
+\begin{verbatim}
+Archive Device = /dev/nst0
+Changer Device = /dev/sg0
+\end{verbatim}
+\normalsize
+
 If you want to remove the SDT-10000 device, you can do so as root with: 
 
 \footnotesize
@@ -324,8 +338,35 @@ echo "scsi add-single-device 2 0 4 0">/proc/scsi/scsi
 where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output
 from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as
 numeric. 
-\label{problems1}
 
+Below is a slightly more complicated output, which is a single autochanger
+with two drives, and which operates the changer on a different channel
+from from the drives:
+
+\footnotesize
+\begin{verbatim}
+Attached devices:
+Host: scsi0 Channel: 00 Id: 00 Lun: 00
+  Vendor: ATA      Model: WDC WD1600JD-75H Rev: 08.0
+  Type:   Direct-Access                    ANSI SCSI revision: 05
+Host: scsi2 Channel: 00 Id: 04 Lun: 00
+  Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
+  Type:   Sequential-Access                ANSI SCSI revision: 03
+Host: scsi2 Channel: 00 Id: 05 Lun: 00
+  Vendor: HP       Model: Ultrium 2-SCSI   Rev: F6CH
+  Type:   Sequential-Access                ANSI SCSI revision: 03
+Host: scsi2 Channel: 00 Id: 06 Lun: 00
+  Vendor: OVERLAND Model: LXB              Rev: 0106
+  Type:   Medium Changer                   ANSI SCSI revision: 02
+\end{verbatim}
+\normalsize
+
+The above tape drives are accessed on /dev/nst0 and /dev/nst1, while
+the control channel for those two drives is /dev/sg3.
+
+
+
+\label{problems1}
 \subsection*{Tips for Resolving Problems}
 \index[general]{Problems!Tips for Resolving }
 \index[general]{Tips for Resolving Problems }
@@ -732,10 +773,10 @@ compatibility of Bacula and your system. A much more optimal Device
 configuration is shown below, but does not work with all tape drives. Please
 test carefully before putting either into production. 
 
-Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 w/Autochanger
-set to variable block size and DCLZ compression, Brian McDonald reports that
-to get Bacula to append correctly between Bacula executions, the correct
-values to use are: 
+Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an
+autochanger set to variable block size and DCLZ compression, Brian McDonald
+reports that to get Bacula to append correctly between Bacula executions,
+the correct values to use are:
 
 \footnotesize
 \begin{verbatim}
@@ -782,6 +823,7 @@ Device {
   Changer Device = /dev/pass2
   AutoChanger = yes
   Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
+
   # FreeBSD Specific Settings
   Offline On Unmount = no
   Hardware End of Medium = no
@@ -797,7 +839,7 @@ Device {
 \subsubsection*{Determining What Tape Drives and Autochangers You Have on
 FreeBSD}
 \index[general]{FreeBSD!Determining What Tape Drives and Autochangers You Have
-on }
+}
 \index[general]{Determining What Tape Drives and Autochangers You Have on
 FreeBSD }
 \addcontentsline{toc}{subsubsection}{Determining What Tape Drives and
@@ -935,8 +977,8 @@ location is listed in the prompt) using any ASCII editor. Remove all {\bf
 VolBlock} lines in the file. When the file is re-written, answer the question,
 and Bacula will run without using block positioning, and it should recover
 your files. 
-\label{BlockModes}
 
+\label{BlockModes}
 \subsection*{Tape Blocking Modes}
 \index[general]{Modes!Tape Blocking }
 \index[general]{Tape Blocking Modes }
@@ -975,3 +1017,24 @@ that block is split into two or more physical records on the tape. Bacula
 assumes that each write causes a single record to be written, and that it can
 sequentially recover each of the blocks it has written by using the same
 number of sequential reads as it had written. 
+
+\subsection*{Autochanger Errors}
+\index[general]{Errors!Autochanger }
+\index[general]{Autochanger Errors }
+\addcontentsline{toc}{subsection}{Autochanger Errors}
+
+If you are getting errors such as:
+
+\footnotesize
+\begin{verbatim}
+3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1.
+\end{verbatim}
+\normalsize
+
+and you are running your Storage daemon as non-root, then most likely
+you are having permissions problems with the control channel. Running
+as root, set permissions on /dev/sgX so that the userid and group of
+your Storage daemon can access the device. You need to ensure that you
+all access to the proper control device, and if you don't have any
+SCSI disk drives (including SATA drives), you might want to change
+the permissions on /dev/sg*.
index e4871306cb9aac602067f5dfb6a5b986565ac10d..431bbce0577aa172f6ec2a3970437dd810964a53 100644 (file)
@@ -236,7 +236,6 @@ information to the file {\bf bacula.trace} in the directory from which Bacula
 is executing. 
 
 \label{Compatibility}
-
 \subsection*{Windows Compatibility Considerations}
 \index[general]{Windows Compatibility Considerations }
 \index[general]{Considerations!Windows Compatibility }
@@ -245,10 +244,13 @@ is executing.
 If any applications are running during the backup and they have files
 opened exclusively, Bacula will not be able to backup those files, so be
 sure you close your applications (or tell your users to close their
-applications) before the backup.  Most Microsoft applications do not open
+applications) before the backup. Fortunately,
+most Microsoft applications do not open
 files exclusively so that they can be backed up.  However, you will need to
 experiment.  In any case, if Bacula cannot open the file, it will print an
 error message, so you will always know which files were not backed up.
+For version 1.37.25 and greater, see the section below on
+Volume Shadow Copy Service.
 
 During backup, Bacula doesn't know about the system registry, so you will
 either need to write it out to an ASCII file using {\bf regedit~~/e} or use a
@@ -339,6 +341,35 @@ message)  } \\
 
 \end{longtable}
 
+\label{VSS}
+\subsection*{Volume Shadow Copy Service}
+\index[general]{Volume Shadow Copy Service }
+\addcontentsline{toc}{subsection}{Volume Shadow Copy Service}
+In version 1.37.25 and greater, you can turn on Microsoft's Volume
+Shadow Copy Service (VSS).      
+
+Microsoft added VSS to Windows XP and Windows 2003. From the perspective of
+a backup-solution for Windows, this is an extremely important step. VSS
+allows Bacula to backup open files and even to interact with applications like
+RDBMS to produce consistent file copies.
+
+Bacula supports VSS on both Windows 3000 and Windows XP.
+Technically Bacula creates a shadow copy as soon as the backup process
+starts. It does then backup all files from the shadow copy and destroys the
+shadow copy after the backup process. Please have in mind, that VSS
+creates a snapshot and thus backs up the system at the state it had
+when starting the backup. It will disregard file changes which occur during
+the backup process.
+
+VSS can be turned on by placing an
+
+\begin{verbatim}
+Enable VSS = yes
+\end{verbatim}
+
+in your FileSet resource. 
+
+
 \subsection*{Windows Firewalls}
 \index[general]{Firewalls!Windows }
 \index[general]{Windows Firewalls }