]> git.sur5r.net Git - bacula/docs/commitdiff
Final changes
authorKern Sibbald <kern@sibbald.com>
Thu, 10 Nov 2005 20:05:58 +0000 (20:05 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 10 Nov 2005 20:05:58 +0000 (20:05 +0000)
34 files changed:
docs/images/Bacula-tray-monitor.png
docs/images/Conf-Diagram.png
docs/images/access-is-denied.png
docs/images/bimagemgr1.png
docs/images/bimagemgr2.png
docs/images/bimagemgr3.png
docs/images/confirm.png
docs/images/error.png
docs/images/flow.png
docs/images/idle.png
docs/images/menu.png
docs/images/next.png
docs/images/prev.png
docs/images/properties-security-advanced-owner.png
docs/images/properties-security.png
docs/images/running.png
docs/images/tray-icon.png
docs/images/up.png
docs/images/view-only.png
docs/images/win32-finish.png
docs/images/win32-location.png
docs/images/win32-nsis.png
docs/images/win32-pkg.png
docs/images/win32-service-ok.png
docs/images/win32-service.png
docs/images/win32-start.png
docs/images/win32-welcome.png
docs/manual/faq.tex
docs/manual/fileset.tex
docs/manual/quickstart.tex
docs/manual/state.tex
docs/manual/tls.tex
docs/manual/translate_images.pl
docs/manual/tutorial.tex

index cbbfc070dde03925f7e2571e70c28fb2d1da3b59..a053e78213400ca6e2602ae5bf570cc04c489b2d 100644 (file)
Binary files a/docs/images/Bacula-tray-monitor.png and b/docs/images/Bacula-tray-monitor.png differ
index 046cd8b1635302da0865636d213e5df0935da49f..9a2264381e346e41fb52f2f42accef01072dab7e 100644 (file)
Binary files a/docs/images/Conf-Diagram.png and b/docs/images/Conf-Diagram.png differ
index 7e34184124f207248289e4e892a9a68e35053b72..1525ab367bb0d08afc07955ecd345aa38e8b3ce7 100644 (file)
Binary files a/docs/images/access-is-denied.png and b/docs/images/access-is-denied.png differ
index 9d040e371fe726220b617003f8801d8e62637b42..b19d56ca6056a8b70f85f6339718c6f04f77d91f 100644 (file)
Binary files a/docs/images/bimagemgr1.png and b/docs/images/bimagemgr1.png differ
index a958e09daa556431220b99ff03655b3c9233fab8..de32581079e831e1d7307c582baeb9eb96561c0a 100644 (file)
Binary files a/docs/images/bimagemgr2.png and b/docs/images/bimagemgr2.png differ
index 8023a5aea876ce258216d741507ca0a06018d694..749c4b7c682df3f5786c9e54e89bd9fee19defda 100644 (file)
Binary files a/docs/images/bimagemgr3.png and b/docs/images/bimagemgr3.png differ
index 2ddb6d5873c755d9b5d75f5077f6387dffe60a1a..d018605c8186e9b1b5eec83195e6c90a1d2432ff 100644 (file)
Binary files a/docs/images/confirm.png and b/docs/images/confirm.png differ
index 9961966b518b7b673deb5e036a0c454f64601f68..8bbf120717c2873f5cc0eed10cb2f14eb3f12020 100644 (file)
Binary files a/docs/images/error.png and b/docs/images/error.png differ
index e06f52b91fa512323c7c45b055ed0c7ce32386e3..d3418292f9707a1609617412e1ae5cfc0f49cf17 100644 (file)
Binary files a/docs/images/flow.png and b/docs/images/flow.png differ
index dc7ccc8bfe510920299d2e028d4f93bd0a435017..b6cee34308e034264f8bb667b698124490e557a4 100644 (file)
Binary files a/docs/images/idle.png and b/docs/images/idle.png differ
index 08938d0810238242b7257ea5eff34b93d5add508..0635bd89cdda09bd3f8243bbe12205fb1fca7755 100644 (file)
Binary files a/docs/images/menu.png and b/docs/images/menu.png differ
index 75deba2ac39ef1b5ee6d94d370e077928f4dd64d..1628652aac7cff4b24228abd9908c320c6026a7c 100644 (file)
Binary files a/docs/images/next.png and b/docs/images/next.png differ
index e416cc3ef70bb5ca5b84e75019674d0c5b14bfa2..e60b8b4073572dcd83b07c60b082ea6e2ba394c9 100644 (file)
Binary files a/docs/images/prev.png and b/docs/images/prev.png differ
index e614bccbe25d081f455a4752cfbe4aa5022ac3f9..c61495be7559b34b738bc8cd42aea6c5d2d75462 100644 (file)
Binary files a/docs/images/properties-security-advanced-owner.png and b/docs/images/properties-security-advanced-owner.png differ
index abfb3a64ceb36cc5cddb465ec0bd6326b48f244d..e33e0c60026cdad795cb8bc3e1355959e468d8b4 100644 (file)
Binary files a/docs/images/properties-security.png and b/docs/images/properties-security.png differ
index 7cb6083caf6d369facece98b445480d39bf80870..a4d711f798c590b9ab44e63c65359c8145c51709 100644 (file)
Binary files a/docs/images/running.png and b/docs/images/running.png differ
index 785c3b5e68bd854c3b160ff3f5ef93203a8da97f..b860a9a588b8ee27c652031ea1ccdfde42d046b5 100644 (file)
Binary files a/docs/images/tray-icon.png and b/docs/images/tray-icon.png differ
index 09df68fb28a5d9c51f7a2533b174a6dce0aff96d..3937e168f44bc997766dbe3b9383bd1db44f094d 100644 (file)
Binary files a/docs/images/up.png and b/docs/images/up.png differ
index f54aca22ebd45066760d1ece4babff783dd14722..53ba6a14646361eaf6a35d48028b76e0b96153b2 100644 (file)
Binary files a/docs/images/view-only.png and b/docs/images/view-only.png differ
index 9770b46a27ca8b467d64008cf59272cdb0e3e13f..94bdb56883cc0dc8e54017ed83dcb51a8b78c86f 100644 (file)
Binary files a/docs/images/win32-finish.png and b/docs/images/win32-finish.png differ
index 610a590627aef800570d43561fe98c9a6b7c38b5..865d6c1260b63df985b825e6dabb6763b4c9b50c 100644 (file)
Binary files a/docs/images/win32-location.png and b/docs/images/win32-location.png differ
index 01da17713911dce311455a88e8c8213407874ec6..ffad8710e7f085db293e5d0e6c0e025c5709a16d 100644 (file)
Binary files a/docs/images/win32-nsis.png and b/docs/images/win32-nsis.png differ
index 2e03f0c183bbe4b5b4bfdaab9faf782f1e828066..dcc465cf9210a69a017167c53c54f377a2d728df 100644 (file)
Binary files a/docs/images/win32-pkg.png and b/docs/images/win32-pkg.png differ
index a6a0a3d8524611a26fbce0bd89dcfe2121acdc84..13c63ab08cf06ad93b928db828b01a7b4ff452c5 100644 (file)
Binary files a/docs/images/win32-service-ok.png and b/docs/images/win32-service-ok.png differ
index 74d0a7d76dc1ee19c741e33bd1d971d74bac17fa..835f092e5d65196ef92d85c92de3e73f9ad6a8cf 100644 (file)
Binary files a/docs/images/win32-service.png and b/docs/images/win32-service.png differ
index c78433e9ee653d1cd19dca044f9c5bb0fc78a52e..8c38df9cf284dd53c0fcfb7dca50bfcfd6d3946f 100644 (file)
Binary files a/docs/images/win32-start.png and b/docs/images/win32-start.png differ
index 44db968db95d0526164553421148751a75b0087f..5bfc5ed7cdd50582ad76628c4fb3fd5992f69a79 100644 (file)
Binary files a/docs/images/win32-welcome.png and b/docs/images/win32-welcome.png differ
index c009d0f29ca9c309aefd6f3e35b3981095e5ba6b..314a5314ab6c7c50e6f4e929aa3fe007beecbea2 100644 (file)
@@ -150,6 +150,9 @@ of
    simultaneously.  Once the maximum connections has been reached, each
    Bacula component will reject all new connections.
 
+   Finally, make sure you have no {\bf hosts.allow} or {\bf hosts.deny}
+   file that is not permitting access to the site trying to connect.
+
 \label{AccessProblems}
 \subsection*{Bacula Runs Fine but Cannot Access a Client on a Different Machine.
    Why? }
@@ -179,6 +182,8 @@ of
    Director's conf file must be known (resolvable) by the File daemon, 
    because it is passed symbolically to the File daemon, which then
    resolves it to get an IP address used to contact the Storage daemon.
+\item You may have a {\bf hosts.allow} or {\bf hosts.deny} file that is
+   not permitting access.
 \end{itemize}
 
 \label{startover}
index 6d250e8213d935a3b789e16e18f65d99494d665f..5796816606858ec752419e846037b3c04ead8760 100644 (file)
@@ -396,7 +396,6 @@ Change: 2005-11-06 12:36:48.000000000 +0100
    really sparse.
 
 \label{readfifo}
-
 \item [readfifo=yes|no]
 \index[fd]{readfifo }
    If enabled, tells the Client to read the data on a backup and write the
@@ -408,6 +407,18 @@ Change: 2005-11-06 12:36:48.000000000 +0100
    FIFO. When this is not enabled (default), the Client simply saves the
    directory entry for the FIFO.
 
+   Unfortunately, when Bacula runs a RunBeforeJob, it waits until that
+   script terminates, and if the script accesses the FIFO to write   
+   into the it, the Bacula job will block and everything will stall.
+   However, Vladimir Stavrinov as supplied tip that allows this feature   
+   to work correctly.  He simply adds the following to the beginning
+   of the RunBeforeJob script:
+
+\begin{verbatim}
+   exec > /dev/null
+\end{verbatim}
+
+
 \item [mtimeonly=yes|no]
 \index[dir]{mtimeonly }
    If enabled, tells the Client that the selection of files during
@@ -790,24 +801,27 @@ Include {
 \end{verbatim}
 \normalsize
 
-   if {\bf /home/abc/fifo} is a fifo device, Bacula will  open the fifo, read it,
-   and store all data thus obtained  on the Volume. Please note, you must have a
-   process on  the system that is writing into the fifo, or Bacula will  hang,
-   and after one minute of waiting, Bacula will give up  and go on to the next
-   file. The data read can be anything  since Bacula treats it as a stream.  
-
-   This feature can be an excellent way to do a  "hot" backup of a very large
-   database. You can  use the {\bf RunBeforeJob} to create the fifo and to  start
-   a program that dynamically reads your database and  writes it to the fifo.
-   Bacula will then write it to the  Volume.  
-
-   During the restore operation, the inverse is true,  after Bacula creates the
-   fifo if there was any data stored  with it (no need to explicitly list it or
-   add any  options), that data will be written back to the fifo. As  a
-   consequence, if any such FIFOs exist in the fileset to  be restored, you must
-   ensure that there is a reader  program or Bacula will block, and after one
-   minute, Bacula  will time out the write to the fifo and move on to the  next
-   file. 
+   if {\bf /home/abc/fifo} is a fifo device, Bacula will open the fifo,
+   read it, and store all data thus obtained on the Volume.  Please note,
+   you must have a process on the system that is writing into the fifo, or
+   Bacula will hang, and after one minute of waiting, Bacula will give up
+   and go on to the next file.  The data read can be anything since Bacula
+   treats it as a stream.
+
+   This feature can be an excellent way to do a "hot" backup of a very
+   large database.  You can use the {\bf RunBeforeJob} to create the fifo
+   and to start a program that dynamically reads your database and writes
+   it to the fifo.  Bacula will then write it to the Volume.  Be sure to
+   read the \ilink{readfifo section}{readfifo} that gives a
+   tip to ensure that the RunBeforeJob does not block Bacula.
+
+   During the restore operation, the inverse is true, after Bacula creates
+   the fifo if there was any data stored with it (no need to explicitly
+   list it or add any options), that data will be written back to the fifo.
+   As a consequence, if any such FIFOs exist in the fileset to be restored,
+   you must ensure that there is a reader program or Bacula will block, and
+   after one minute, Bacula will time out the write to the fifo and move on
+   to the next file.
 \end{itemize}
 
 \subsubsection*{FileSet Examples}
@@ -815,10 +829,10 @@ Include {
 \index[general]{FileSet Examples}
 \addcontentsline{toc}{subsection}{FileSet Examples}
 
-The following is an example of a valid FileSet resource definition. Note, the
-first Include pulls in the contents of the file {\bf /etc/backup.list} when
-Bacula is started (i.e. the @), and that file must have each filename to be
-backed up preceded by a {\bf File =} and on a separate line. 
+The following is an example of a valid FileSet resource definition.  Note,
+the first Include pulls in the contents of the file {\bf /etc/backup.list}
+when Bacula is started (i.e.  the @), and that file must have each filename
+to be backed up preceded by a {\bf File =} and on a separate line.
 
 \footnotesize
 \begin{verbatim}
index 551544fd9a7c637c67072ac43c2377dcfd56e675..2888552665efb4e94d9cb9504858dc3470112906 100644 (file)
@@ -186,10 +186,9 @@ The File daemon is a program that runs on each (Client) machine. At the
 request of the Director, finds the files to be backed up and sends them (their
 data) to the Storage daemon. 
 
-The File daemon configuration file is found in the directory specified on the
-{\bf \verb:--:sysconfdir} option that you specified on the {\bf ./configure}
-command.
-By default, the File daemon's configuration file is named {\bf
+The File daemon configuration file is found in the directory specified on
+the {\bf \verb:--:sysconfdir} option that you specified on the {\bf ./configure}
+command. By default, the File daemon's configuration file is named {\bf
 bacula-fd.conf}. Normally, for first time users, no change is needed to this
 file. Reasonable defaults are set. However, if you are going to back up more
 than one machine, you will need to install the File daemon with a unique
@@ -207,8 +206,7 @@ schedules and monitors all jobs to be backed up.
 
 The Director configuration file is found in the directory specified on the
 {\bf \verb:--:sysconfdir} option that you specified on the {\bf ./configure}
-command.
-Normally the Director's configuration file is named {\bf bacula-dir.conf}. 
+command. Normally the Director's configuration file is named {\bf bacula-dir.conf}. 
 
 In general, the only change you must make is modify the FileSet resource so
 that the {\bf Include} configuration directive contains at least one line with
@@ -228,8 +226,13 @@ separate File daemon or Client specification for each system, specifying its
 name, address, and password. We have found that giving your daemons the same
 name as your system but post fixed with {\bf -fd} helps a lot in debugging.
 That is, if your system name is {\bf foobaz}, you would give the File daemon
-the name {\bf foobaz-fd}. For the Director, you might use {\bf foobaz-dir},
+the name {\bf foobaz-fd}. For the Director, you should use {\bf foobaz-dir},
 and for the storage daemon, you might use {\bf foobaz-sd}. 
+Each of your Bacula components {\bf must} have a unique name.  If you
+make them all the same, aside fromt the fact that you will not
+know what daemon is sending what message, if they share the same
+working directory, the daemons temporary file names will not
+be unique, and you will get many strange failures.
 
 \subsubsection*{
 \ilink{Configuring the Storage daemon}{_ChapterStart31}}
@@ -293,20 +296,19 @@ conf file name).
 \addcontentsline{toc}{subsection}{Testing Bacula Compatibility with Your Tape
 Drive}
 
-Before spending a lot of time on Bacula only to find that it doesn't work with
-your tape drive, please read the 
-\ilink{btape -- Testing Your Tape Drive}{_ChapterStart27}
-chapter of this manual. If you have a modern standard SCSI tape drive on a
-Linux or Solaris, most likely it will work, but better test than be sorry. For
-FreeBSD (and probably other xBSD flavors), reading the above mentioned tape
-testing chapter is a must. Also, for FreeBSD, please see 
-\elink{The FreeBSD Diary}{http://www.freebsddiary.org/bacula.php} for a
-detailed description on how to make Bacula work on your system. In addition,
-users of FreeBSD prior to 4.9-STABLE dated Mon Dec 29 15:18:01 2003 UTC who
-plan to use tape devices, please see the file {\bf
-platforms/freebsd/pthreads-fix.txt} in the main Bacula directory concerning
-important information concerning compatibility of Bacula and your system. 
-\label{notls}
+Before spending a lot of time on Bacula only to find that it doesn't work
+with your tape drive, please read the \ilink{btape -- Testing Your Tape
+Drive}{_ChapterStart27} chapter of this manual.  If you have a modern
+standard SCSI tape drive on a Linux or Solaris, most likely it will work,
+but better test than be sorry.  For FreeBSD (and probably other xBSD
+flavors), reading the above mentioned tape testing chapter is a must.
+Also, for FreeBSD, please see \elink{The FreeBSD
+Diary}{http://www.freebsddiary.org/bacula.php} for a detailed description
+on how to make Bacula work on your system.  In addition, users of FreeBSD
+prior to 4.9-STABLE dated Mon Dec 29 15:18:01 2003 UTC who plan to use tape
+devices, please see the file {\bf platforms/freebsd/pthreads-fix.txt} in
+the main Bacula directory concerning important information concerning
+compatibility of Bacula and your system.  \label{notls}
 
 \subsection*{Get Rid of the /lib/tls Directory}
 \index[general]{Directory!Get Rid of the /lib/tls }
index d44c8e420cbbfff64f4dfdc17adfa2665265436e..5d126d843324c9a062b64c60ae8de859463d99c1 100644 (file)
@@ -92,7 +92,8 @@ In other words, what is and what is not currently implemented and functional.
 \item Support ANSI and IBM tape labels.
 \item Support for Unicode filenames (e.g. Chinese) on Win32 machines on
       version 1.37.28 and greater.
-
+\item Consistent backup of open files on Win32 systems (WinXP, Win2003),
+      but not Win2000, using Volume Shadow Copy (VSS).
 \end{itemize}
 
 \subsection*{Advantages of Bacula Over Other Backup Programs}
@@ -161,14 +162,6 @@ In other words, what is and what is not currently implemented and functional.
 \addcontentsline{toc}{subsection}{Current Implementation Restrictions}
 
 \begin{itemize}
-\item Typical of Microsoft, not all files can always be saved on WinNT,  Win2K
-   and WinXP when they are in use by another program.  Anyone knowing the magic
-   incantations, please step  forward. The files that are skipped seem to be in
-   exclusive use  by some other process, and don't appear to be too important.  
-
-   Volume Shadow Copy (VSS) is now (July 2005) implemented in the Bacula Win32 File 
-   daemon. The code is there, and it is being tested, but it is not yet
-   released.
 \item Path and filenames longer than 260 characters on Win32 systems are
    not supported. They will be backed up, but they cannot be restored. By
    using the {\bf Portable=yes} directive in your FileSet, files with
index 132fc23927b03602583f33ba625ae50542f0be95..237a165f717b52b4e0e40d2a694fcc2b6b1f57c2 100644 (file)
@@ -141,3 +141,105 @@ Open-source PKI Book project at Source Forge:
 http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm}
 {http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm}.
 Note, this link may change. 
+
+\subsection*{Example TLS Configuration Files}
+\index[general]{Example!TLS Configuration Files}
+\index[general]{TLS Configuration Files}
+\addcontentsline{toc}{subsection}{Example TLS Configuration Files}
+
+Landon has supplied us with the TLS portions of his configuration
+files, which should help you setting up your own.
+    
+{\bf bacula-dir.conf}
+\footnotesize
+\begin{verbatim}
+   Director {                            # define myself
+     Name = backup1-dir
+     ...
+     TLS Require = yes
+     TLS Verify Peer = yes
+     TLS Allowed CN = "bacula@backup1.example.com"
+     TLS Allowed CN = "administrator@example.com"
+     TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
+     # This is a server certificate, used for incoming
+     # console connections.
+     TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
+     TLS Key = /usr/local/etc/ssl/backup1/key.pem
+   }
+
+   Storage {
+     Name = File
+     Address = backup1.example.com
+     ...
+     TLS Require = yes
+     TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
+     # This is a client certificate, used by the director to
+     # connect to the storage daemon
+     TLS Certificate = /usr/local/etc/ssl/bacula@backup1/cert.pem
+     TLS Key = /usr/local/etc/ssl/bacula@backup1/key.pem
+   }
+\end{verbatim}
+\normalsize
+
+{\bf bacula-fd.conf}
+\footnotesize
+\begin{verbatim}
+   Director {
+     Name = backup1-dir
+     ...
+     TLS Require = yes
+     TLS Verify Peer = yes
+     # Allow only the Director to connect
+     TLS Allowed CN = "bacula@backup1.example.com"
+     TLS CA Certificate File = /usr/local/etc/ssl/ca.pem\
+     # This is a server certificate. It is used by connecting
+     # directors to verify the authenticity of this file daemon
+     TLS Certificate = /usr/local/etc/ssl/server1/cert.pem
+     TLS Key = /usr/local/etc/ssl/server1/key.pem
+   }
+\end{verbatim}
+\normalsize
+
+{\bf bacula-sd.conf}
+\footnotesize
+\begin{verbatim}
+   Storage {                             # definition of myself
+     Name = backup1-sd
+     ...
+     # These TLS configuration options are used for incoming
+     # file daemon connections. Director TLS settings are handled
+     # below.
+     TLS Require = yes
+     # Peer certificate is not required/requested -- peer validity
+     # is verified by the storage connection cookie provided to the
+     # File Daemon by the director.
+     TLS Verify Peer = no
+     TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
+     # This is a server certificate. It is used by connecting
+     # file daemons to verify the authenticity of this storage daemon
+     TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
+     TLS Key = /usr/local/etc/ssl/backup1/key.pem
+   }
+
+   #
+   # List Directors who are permitted to contact Storage daemon
+   #
+   Director {
+     Name = backup1-dir
+     ...
+     TLS Require = yes
+     # Require the connecting director to provide a certificate
+     # with the matching CN.
+     TLS Verify Peer = yes
+     TLS Allowed CN = "bacula@backup1.example.com"
+     TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
+     # This is a server certificate. It is used by the connecting
+     # director to verify the authenticity of this storage daemon
+     TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
+     TLS Key = /usr/local/etc/ssl/backup1/key.pem
+   }
+\end{verbatim}
+\normalsize
+
+
+
index c7225118df6e8e5ca1cd2f0d8658b601a3961011..69395fe48f2e76977cc0d4332ba8edfc983fd77e 100755 (executable)
@@ -30,34 +30,34 @@ my $path;
 #  latex2html has used as the source to create the imgxx.png filename.
 # The filename extension is taken from the file 
 sub read_transfile {
-       my ($trans,$direction) = @_;
-
-       if (!open IN,"<$path$TRANSFILE") {
-               print "WARNING:  Cannot open image translation file $path$TRANSFILE for reading\n";
-               print "   Image filename translation aborted\n\n";
-               exit 0;
-       }
-
-       while (<IN>) {
-               chomp;
-               my ($new,$old) = split(/\001/);
-
-               # Old filenames will usually have a leading ./ which we don't need.
-               $old =~ s/^\.\///;
-
-               # The filename extension of the old filename must be made to match
-               #  the new filename because it indicates the encoding format of the image.
-               my ($ext) = $new =~ /(\.[^\.]*)$/;
-               $old =~ s/\.[^\.]*$/$ext/;
-               if ($direction == 0) {
-                       $trans->{$new} = $old;
-               } else {
-                       $trans->{$old} = $new;
-               }
-       }
-       close IN;
+        my ($trans,$direction) = @_;
+
+        if (!open IN,"<$path$TRANSFILE") {
+                print "WARNING:  Cannot open image translation file $path$TRANSFILE for reading\n";
+                print "   Image filename translation aborted\n\n";
+                exit 0;
+        }
+
+        while (<IN>) {
+                chomp;
+                my ($new,$old) = split(/\001/);
+
+                # Old filenames will usually have a leading ./ which we don't need.
+                $old =~ s/^\.\///;
+
+                # The filename extension of the old filename must be made to match
+                #  the new filename because it indicates the encoding format of the image.
+                my ($ext) = $new =~ /(\.[^\.]*)$/;
+                $old =~ s/\.[^\.]*$/$ext/;
+                if ($direction == 0) {
+                        $trans->{$new} = $old;
+                } else {
+                        $trans->{$old} = $new;
+                }
+        }
+        close IN;
 }
-       
+        
 # Translates the image names in the file given as the first argument, according to 
 #  the translations in the hash that is given as the second argument.
 #  The file contents are read in entirely into a string, the string is processed, and
@@ -68,73 +68,73 @@ sub read_transfile {
 # Links to other files are added to the %filelist for processing.  That way,
 #  all linked files will be processed (assuming they are local).
 sub translate_html {
-       my ($filename,$trans,$filelist) = @_;
-       my ($contents,$out,$this,$img,$dest);
-       my $cnt = 0;
-
-       # If the filename is an external link ignore it.  And drop any file:// from
-       #  the filename.
-       $filename =~ /^(http|ftp|mailto)\:/ and return 0;
-       $filename =~ s/^file\:\/\///;
-       # Load the contents of the html file.
-       if (!open IF,"<$path$filename") {
-               print "WARNING:  Cannot open $path$filename for reading\n";
-               print "  Image Filename Translation aborted\n\n";
-               exit 0;
-       }
-
-       while (<IF>) {
-               $contents .= $_;
-       }
-       close IF;
-
-       # Now do the translation...
-       #  First, search for an image filename.
-       while ($contents =~ /\<\s*IMG[^\>]*SRC=\"/si) {
-               $contents = $';
-               $out .= $` . $&;
-               
-               # The next thing is an image name.  Get it and translate it.
-               $contents =~ /^(.*?)\"/s;
-               $contents = $';
-               $this = $&;
-               $img = $1;
-               # If the image is in our list of ones to be translated, do it
-               #  and feed the result to the output.
-               $cnt += $this =~ s/$img/$trans->{$img}/ if (defined($trans->{$img}));
-               $out .= $this;
-       }
-       $out .= $contents;
-
-       # Now send the translated text to the html file, overwriting what's there.
-       open OF,">$path$filename" or die "Cannot open $path$filename for writing\n";
-       print OF $out;
-       close OF;
-
-       # Now look for any links to other files and add them to the list of files to do.
-       while ($out =~ /\<\s*A[^\>]*HREF=\"(.*?)\"/si) {
-               $out = $';
-               $dest = $1;
-               # Drop an # and anything after it.
-               $dest =~ s/\#.*//;
-               $filelist->{$dest} = '' if $dest;
-       }
-       return $cnt;
+        my ($filename,$trans,$filelist) = @_;
+        my ($contents,$out,$this,$img,$dest);
+        my $cnt = 0;
+
+        # If the filename is an external link ignore it.  And drop any file:// from
+        #  the filename.
+        $filename =~ /^(http|ftp|mailto)\:/ and return 0;
+        $filename =~ s/^file\:\/\///;
+        # Load the contents of the html file.
+        if (!open IF,"<$path$filename") {
+                print "WARNING:  Cannot open $path$filename for reading\n";
+                print "  Image Filename Translation aborted\n\n";
+                exit 0;
+        }
+
+        while (<IF>) {
+                $contents .= $_;
+        }
+        close IF;
+
+        # Now do the translation...
+        #  First, search for an image filename.
+        while ($contents =~ /\<\s*IMG[^\>]*SRC=\"/si) {
+                $contents = $';
+                $out .= $` . $&;
+                
+                # The next thing is an image name.  Get it and translate it.
+                $contents =~ /^(.*?)\"/s;
+                $contents = $';
+                $this = $&;
+                $img = $1;
+                # If the image is in our list of ones to be translated, do it
+                #  and feed the result to the output.
+                $cnt += $this =~ s/$img/$trans->{$img}/ if (defined($trans->{$img}));
+                $out .= $this;
+        }
+        $out .= $contents;
+
+        # Now send the translated text to the html file, overwriting what's there.
+        open OF,">$path$filename" or die "Cannot open $path$filename for writing\n";
+        print OF $out;
+        close OF;
+
+        # Now look for any links to other files and add them to the list of files to do.
+        while ($out =~ /\<\s*A[^\>]*HREF=\"(.*?)\"/si) {
+                $out = $';
+                $dest = $1;
+                # Drop an # and anything after it.
+                $dest =~ s/\#.*//;
+                $filelist->{$dest} = '' if $dest;
+        }
+        return $cnt;
 }
-       
+        
 # REnames the image files spefified in the %translate hash.
 sub rename_images {
-       my $translate = shift;
-       my ($response);
-
-       foreach (keys(%$translate)) {
-               if (! $translate->{$_}) {
-                       print "    WARNING: No destination Filename for $_\n";
-               } else {
-                       $response = `mv -f $path$_ $path$translate->{$_} 2>&1`;
-                       $response and print "ERROR from system    $response\n";
-               }
-       }
+        my $translate = shift;
+        my ($response);
+
+        foreach (keys(%$translate)) {
+                if (! $translate->{$_}) {
+                        print "    WARNING: No destination Filename for $_\n";
+                } else {
+                        $response = `mv -f $path$_ $path$translate->{$_} 2>&1`;
+                        $response and print "ERROR from system    $response\n";
+                }
+        }
 }
 
 #################################################
@@ -152,7 +152,7 @@ my ($cnt,$direction);
 
 my $arg0 = shift(@ARGV);
 $arg0 =~ /^(--to_meaningful_names|--from_meaningful_names)$/ or
-       die "ERROR: First argument must be either \'--to_meaningful_names\' or \'--from_meaningful_names\'\n";
+        die "ERROR: First argument must be either \'--to_meaningful_names\' or \'--from_meaningful_names\'\n";
 
 $direction = ($arg0 eq '--to_meaningful_names') ? 0 : 1;
 
@@ -166,20 +166,20 @@ $path = '' unless $path;
 read_transfile(\%translate,$direction);
 
 foreach (@ARGV) {
-       # Strip the path from the filename, and use it later on.
-       if (s/(.*\/)//) {
-               $path = $1;
-       } else {
-               $path = '';
-       }
-       $filelist{$_} = '';
-
-       while ($thisfile = (keys(%filelist))[0]) {
-               $cnt += translate_html($thisfile,\%translate,\%filelist) if (!exists($completed{$thisfile}));
-               delete($filelist{$thisfile});
-               $completed{$thisfile} = '';
-       }
-       print "translate_images.pl: $cnt image filenames translated ",($direction)?"from":"to"," meaningful names\n";
+        # Strip the path from the filename, and use it later on.
+        if (s/(.*\/)//) {
+                $path = $1;
+        } else {
+                $path = '';
+        }
+        $filelist{$_} = '';
+
+        while ($thisfile = (keys(%filelist))[0]) {
+                $cnt += translate_html($thisfile,\%translate,\%filelist) if (!exists($completed{$thisfile}));
+                delete($filelist{$thisfile});
+                $completed{$thisfile} = '';
+        }
+        print "translate_images.pl: $cnt image filenames translated ",($direction)?"from":"to"," meaningful names\n";
 }
 
 rename_images(\%translate);
index b449e7a03806e216b862ebbab99fa5ebffa1f339..6b6da6243a3364a25e8880d7dfe4c38aea8a050c 100644 (file)
@@ -1023,10 +1023,15 @@ daemons from the install directory as follows:
 
 \footnotesize
 \begin{verbatim}
-./bacula start -d20
+./bacula start -d100
 \end{verbatim}
 \normalsize
 
+This can be particularly helpful if your daemons do not start correctly,
+because direct daemon output to the console is normally directed to the
+NULL device, but with the debug level greater than zero, the output
+will be sent to the starting terminal.
+
 To stop the three daemons, enter the following from the install directory: 
 
 \footnotesize