
#include "bacula_template.inc" title="Features" num=2

<h1>The Current State of Bacula</h1>
In other words, what is and what is not currently implemented
and functional.
<h2>What is Implemented</h2>
<ul>
  <li>Network backup/restore with centralized Director.</li>
  <li>Internal scheduler for automatic <a href="bacula.html#JobDef">Job</a> execution.</li>
  <li>Scheduling of multiple Jobs at the same time.</li>
  <li>You may run one Job at a time or multiple simultaneous Jobs. Multiple
      simultaneous jobs is not currently recommended. </li>
  <li>Restore of one or more files selected interactively.</li>
  <li>Restore of a complete system starting from bare
      metal. This is mostly automated for Linux systems and
      partially automated for Solaris. See <a href="rescue.html">Disaster Recovery
      Using Bacula</a>.</li>
  <li>Listing and Restoration of files using stand-alone <b>bls</b> and
      <b>bextract</b> tool programs.  Among other things, this permits
      extraction of files when <b>Bacula</b> and/or the catalog are not
      available.  </li>
  <li><a href="bacula.html#UADef">Console</a> interface to the <a href="director.html">Director</a>
       allowing complete control. Both a shell and GNOME GUI versions of
       the Console program are available. Note, the GNOME GUI program currently
       offers no additional features over the shell program. </li>
  <li>Verification of files previously cataloged, permitting a Tripwire like
      capability (system break-in detection).</li>
  <li>CRAM-MD5 password authentication between each component (daemon).</li>
  <li>A comprehensive and extensible <a href="dirdconf.html#ConfigFile">configuration file</a> for each daemon.</li>
  <li>Catalog database facility for remembering Volumes, Pools, Jobs,
      and Files backed up.</li> 
  <li>Support for SQLite and MySQL Catalog databases.</li> 
  <li>User extensible queries to the SQLite and MySQL databases.</li> 
  <li>Labeled Volumes, preventing accidental overwriting 
      (at least by Bacula).</li> 
  <li>Any number of Jobs and Clients can be backed up to a single
      Volume. That is, you can backup and restore Linux, Unix, Sun, and  
      Windows machines to the same Volume.</li>
  <li>Multi-volume saves.  When a Volume is full, <b>Bacula</b>
      automatically requests the next Volume and continues the backup.</li>
  <li><a href="dirdconf.html#PoolResource">Pool and Volume</a> library management
      providing Volume flexibility (e.g. monthly, weekly, daily Volume sets,
      Volume sets segregated by Client, ...). </li> 
  <li>Simple shell interface support for virtually any autoloader program.
      Several autoloaders including <b>mtx</b> are currently implemented.</li>
  <li>Machine independent Volume data format. Linux, Solaris, and Windows
      clients can all be backed up to the same Volume if desired. </li> 
  <li>A flexible <a href="messagesres.html#MessageResource"> message</a> 
      handler including routing of messages from any daemon back to the
      Director and automatic email reporting.</li>
  <li>Multi-threaded implementation.</li>
  <li>Mechanisms to handle arbitrarily long filenames and messages.</li>
  <li>GZIP compression on a file by file basis done by the Client program
      if requested before network transit.</li>
  <li>Computation of MD5 or SHA1 signatures if requested.</li>
  <li>Autochanger support (any autochanger supported by <b>mtx</b>).</li>
  <li>Support for autochanger barcodes -- automatic tape labeling from
      barcodes.</li>
  <li>Raw device backup.</li>

</ul>

<h2>Advantages of Bacula Over Other Backup Programs</h2>
<ul>
  <li>Since there is a client for each machine, you can backup
      and restore clients of any type ensuring that all attributes of
      files are properly saved and restored.</li>
  <li>It is also possible to backup clients without any client software by
      using NFS or Samba. However, if possible, we recommend running
      a Client File daemon on each machine to be backed up.</li>
  <li>Bacula handles multi-volume backups.</li>
  <li>A full comprehensive database of all files backed up. This permits
      online viewing of files saved on any particular Volume.</li>
  <li>Automatic pruning of the database (removal of old records) thus
      simplifying database administration.</li>
  <li>Any SQL database engine can be used making Bacula very flexible.</li>
  <li>The modular but integrated design makes <b>Bacula</b> very scalable.</li>
  <li>Since Bacula uses client file servers, any database or other 
      application can be properly shutdown by <b>Bacula</b> using the native 
      tools of the system, backed up, then restarted (all within a 
      <b>Bacula</b> Job).</li>
  <li>Bacula has a built-in Job scheduler.</li>
  <li>The Volume format is documented and there are simple C programs to
      read/write it.</li>
  <li>Bacula uses well defined (registered) ports -- no rpcs, no shared memory.</li>
  <li>Bacula installation and configuration is relatively simple compared 
      to other comparable products.</li>
</ul>


<h2>Current Implementation Weaknesses</h2>
<ul>
  <li>The graphical user interface is currently in an infant stage.</li>
  <li>Currently (as of version 1.29) we recommend that you not run multiple
      simultaneous jobs backing up to the same Volume. This is because the
      restore code is not yet mature enough (tested enough) to deal with
      intermingled blocks from multiple simultaneous jobs.</li>
  <li>Typical of Microsoft, not all files can always be saved on WinNT and Win2000.
      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. </li>
  <li>On WinXT systems (and possibly WinNT and Win2K), Bacula runs under the 
      LocalSystem account. Thus all files that are restored are restored with
      that account as the owner. This may prevent normal users from accessing
      them. About the only solution to this problem at the moment is to
      either use the <b>CACLS</b> program in SafeMode (F8 on boot), or to
      run Bacula under your userid. When Bacula runs under your userid, it will
      not display the system tray icon (no permission!)</li>
  <li>Windows Unicode filenames (e.g. Chinese) cannot be saved or restored.</li>
</ul>

<h2>Other Items Not Implemented (but planned)</h2>
<ul>
  <li>Complete error checking on configuration files.</li>
  <li>Event handlers are not yet implemented (e.g. when Job terminates
      do this, ...)</li>
  <li>File System Modules (configurable routines for saving/restoring special files).</li>
  <li>Data encryption between the daemons.</li>
</ul>


<h2>Temporary Limitations or Restrictions</h2>
<ul>
  <li>All three daemons (DIR, FD, SD) must be running for a Job to 
      run. If you use MySQL as the catalog, it must also be running.
      If you use SQLite as the catalog, it will be started automatically. 
      This isn't very significant as most other programs have the same
      limitation. </li>
  <li>Unicode is not yet supported.</li>
  <li>128 bit integers are not yet implemented.</li>
  <li>Supports only IPv4.</li>
</ul>

<h2>Design Limitations or Restrictions</h2>
<ul>
  <li>Names (resource names, Volume names, and such) defined in Bacula
      configuration files are limited to a fixed number of characters.
      Currently the limit is defined as 127 characters.  Note, this does
      not apply to filenames, which may be arbitrarily long.</li>
  <li>There is no concept of a Pool of backup devices (i.e. if 
      device /dev/nst0 is busy, use /dev/nst1, ...).</li>
</ul>

<page_prev name="Introduction" url="bacula.html">
<page_next name="Getting Started" url="quickstart.html">
