$version_lst = array(
'empty' => "SELECT ONE",
++<<<<<<< HEAD
++=======
+ '206' => "3.0.x",
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
'200' => "1.36.x",
'201' => "1.38.x",
'202' => "2.0.x",
'203' => "2.2.x",
'206' => "2.4.x",
++<<<<<<< HEAD
+ '206' => "3.0.x",
++=======
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
'204' => "GIT master version"
);
<script type="text/javascript" language="JavaScript">
++<<<<<<< HEAD
+function validate_testimonial (form) {
++=======
+ function validate_testimonial () {
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
var alertstr = '';
var invalid = 0;
var invalid_fields = new Array();
var ok;
++<<<<<<< HEAD
++=======
+ var form = document.forms['form1'];
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
// email: standard text, hidden, password, or textarea box
var email = form.elements['email_address'].value;
if (email == null || ! email.match(/^[\w\-\+\._]+\@[a-zA-Z0-9][-a-zA-Z0-9\.]*\.[a-zA-Z]+$/)) {
}
var number = form.elements['orgtype_id'].value;
if (number == null || ! number.match(/^[0-9]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Choose one of the "Organization type" options\n';
++=======
+ alertstr += '- Choose one of the "Organization type" options\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('orgtype_id');
invalid++;
}
}
var ostype = form.elements['ostype_id'].value;
if (ostype == null || ! ostype.match(/^[0-9]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Choose one of the "Director OS" field\n';
++=======
+ alertstr += '- Choose one of the "Director OS" field\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('ostype_id');
invalid++;
}
var catalog = form.elements['catalog_id'].value;
if (catalog == null || ! catalog.match(/^[0-9]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Choose one of the "Catalog type" field\n';
+ invalid_fields.push('catalog_id');
+ invalid++;
+ }
+ var number = form.elements['number_fd'].value;
+ if (number == null || ! number.match(/^[0-9,\.]+$/)) {
+ alertstr += '- Invalid entry for the "Number of Client" field\n';
++=======
+ alertstr += '- Choose one of the "Catalog type" field\n';
+ invalid_fields.push('catalog_id');
+ invalid++;
+ }
+ var comments = form.elements['comments'].value;
+ if (comments != null && comments.match(/http:\/\//)) {
+ alertstr += '- Invalid entry for the "Comments" field, we disallow spam url\n';
+ invalid_fields.push('comments');
+ invalid++;
+ }
+ comments = form.elements['hardware_comments'].value;
+ if (comments != null && comments.match(/http:\/\//)) {
+ alertstr += '- Invalid entry for the "Hardware comments" field, we disallow spam url\n';
+ invalid_fields.push('hardware_comments');
+ invalid++;
+ }
+ var number = form.elements['number_fd'].value;
+ if (number == null || ! number.match(/^[0-9,\.]+$/)) {
+ alertstr += '- Invalid entry for the "Number of Client" field\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('number_fd');
invalid++;
}
number = form.elements['number_sd'].value;
if (number == null || ! number.match(/^[0-9,\.]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Invalid entry for the "Number of Storage" field\n';
++=======
+ alertstr += '- Invalid entry for the "Number of Storage" field\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('number_sd');
invalid++;
}
number = form.elements['number_dir'].value;
++<<<<<<< HEAD
+ if (number == null || ! number.match(/^[0-9,\.]+$/)) {
+ alertstr += '- Invalid entry for the "Number of Director" field\n';
++=======
+ if (number == null || ! number.match(/^[0-9,\.]+$/) || number > 100) {
+ alertstr += '- Invalid entry for the "Number of Director" field\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('number_dir');
invalid++;
}
number = form.elements['month_gb'].value;
if (number == null || ! number.match(/^[0-9,\.]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Invalid entry for the "Number GB/month" field\n';
++=======
+ alertstr += '- Invalid entry for the "Number GB/month" field\n';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
invalid_fields.push('month_gb');
invalid++;
}
number = form.elements['number_files'].value;
if (number == null || ! number.match(/^[0-9,\.]+$/)) {
++<<<<<<< HEAD
+ alertstr += '- Invalid entry for the "File number" field\n';
+ invalid_fields.push('number_files');
+ invalid++;
+ }
++=======
+ alertstr += '- Invalid entry for the "File number" field\n';
+ invalid_fields.push('number_files');
+ invalid++;
+ }
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
if (invalid > 0 || alertstr != '') {
if (! invalid) invalid = 'The following'; // catch for programmer error
alert(''+invalid+' error(s) were encountered with your submission:'+'\n\n'
<?
if ($_REQUEST['action'] == 'Modify') {
echo "<input type='hidden' title='testimonial id' id='id' name='id' class='ItemValue' value=''>";
++<<<<<<< HEAD
+ echo "<input type='submit' name='action' class='ItemValue' onclick='return validate_testimonial(this);' value='Save'>";
++=======
+ echo "<input type='submit' name='action' class='ItemValue' onclick='return validate_testimonial();' value='Save'>";
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
echo "<input type='submit' name='action' class='ItemValue' onclick='confirm(\"Are you sure ?\");' value='Delete'><br>";
echo "<input type='hidden' name='page' class='ItemValue' value='testimonial'><br>";
$attribs = array('title','website','hardware_comments','comments') ;
foreach ($attribs as $arr) {
$formul[$arr] = preg_replace('/[^a-zA-Z0-9!\.?\:\/,;_()@\n -]/', " ", $_REQUEST[$arr]);
++<<<<<<< HEAD
++=======
+ }
+ /* Disallow http:// links into comments field */
+ $m = array();
+ preg_match('/http:\/\//', $_REQUEST['comments'], $m);
+ if (sizeof($m) > 2) {
+ return '';
+ }
+ $m = array();
+ preg_match('/http:\/\//', $_REQUEST['hardware_comments'], $m);
+ if (sizeof($m) > 2) {
+ return '';
+ }
+ /* Disallow when number of dir too big or > number of fd */
+ if (intval($_REQUEST['number_dir']) > 100 ||
+ intval($_REQUEST['number_dir']) > intval($_REQUEST['number_fd'])) {
+ return '';
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
}
-
$attribs = array('publish_contact','publish_email', 'publish_orgname', 'orgtype_id',
'orgindustry_id','org_size', 'publish_orgsize','publish_website', 'bacula_version',
'country_id','ostype_id', 'redundant_setup','number_fd','number_sd','support',
%%
++<<<<<<< HEAD
+\chapter{Released Version 3.0.3}
+There are no new features. This version simply fixes a number of
+bugs found in version 3.0.2 during the onging development process.
+
+\chapter{New Features in Released Version 3.0.2}
+
++=======
+ \chapter{New Features in 3.1.4 (Development Version}
+ \label{NewFeaturesChapter}
+
+ This chapter presents the new features that are currently under development
+ in the 3.1.x versions to be released as Bacula version 3.2.0 sometime in
+ late 2009 or early 2010.
+
+
+ \section{Maximum concurent jobs for Devices}
+ \label{sec:maximumconcurentjobdevice}
+
+ {\bf Maximum Concurrent Jobs} is a new Device directive in the Storage
+ Daemon configuration permits setting the maximum number of Jobs that can
+ run concurrently on a specified Device. Using this directive, it is
+ possible to have different Jobs using multiple drives, because when the
+ Maximum Concurrent Jobs limit is reached, the Storage Daemon will start new
+ Jobs on any other available compatible drive. This facilitates writing to
+ multiple drives with multiple Jobs that all use the same Pool.
+
+ \section{Restore from Multiple Storage Daemons}
+ \index[general]{Restore}
+
+ Previously, you were able to restore from multiple devices in a single Storage
+ Daemon. Now, Bacula is able to restore from multiple Storage Daemons. For
+ example, if your full backup runs on a Storage Daemon with an autochanger, and
+ your incremental jobs use another Storage Daemon with lots of disks, Bacula
+ will switch automatically from one Storage Daemon to an other within the same
+ Restore job.
+
+ You must upgrade your File Daemon to version 3.1.3 or greater to use this feature.
+
+ This project was funded by Bacula Systems with the help of Equiinet.
+
+ \section{File Deduplication using Base Jobs}
+ A base job is sort of like a Full save except that you will want the FileSet to
+ contain only files that are unlikely to change in the future (i.e. a snapshot
+ of most of your system after installing it). After the base job has been run,
+ when you are doing a Full save, you specify one or more Base jobs to be used.
+ All files that have been backed up in the Base job/jobs but not modified will
+ then be excluded from the backup. During a restore, the Base jobs will be
+ automatically pulled in where necessary.
+
+ This is something none of the competition does, as far as we know (except
+ perhaps BackupPC, which is a Perl program that saves to disk only). It is big
+ win for the user, it makes Bacula stand out as offering a unique optimization
+ that immediately saves time and money. Basically, imagine that you have 100
+ nearly identical Windows or Linux machine containing the OS and user files.
+ Now for the OS part, a Base job will be backed up once, and rather than making
+ 100 copies of the OS, there will be only one. If one or more of the systems
+ have some files updated, no problem, they will be automatically restored.
+
+ A new Job directive \texttt{Base=Jobx, Joby...} permits to specify the list of
+ files that will be used during Full backup as base.
+
+ \begin{verbatim}
+ Job {
+ Name = BackupLinux
+ Level= Base
+ ...
+ }
+
+ Job {
+ Name = BackupZog4
+ Base = BackupZog4, BackupLinux
+ Accurate = yes
+ ...
+ }
+ \end{verbatim}
+
+ In this example, the job \texttt{BackupZog4} will use the most recent version
+ of all files contained in \texttt{BackupZog4} and \texttt{BackupLinux}
+ jobs. Base jobs should have run with \texttt{level=Base} to be used.
+
+ By default, Bacula will compare permissions bits, user and group fields,
+ modification time, size and the checksum of the file to choose between the
+ current backup and the BaseJob file list. You can change this behavior with the
+ \texttt{BaseJob} FileSet option. This option works like the \texttt{verify=}
+ one, that is described in the \ilink{FileSet}{FileSetResource} chapter.
+
+ \begin{verbatim}
+ FileSet {
+ Name = Full
+ Include = {
+ Options {
+ BaseJob = pmugcs5
+ Accurate = mcs5
+ Verify = pin5
+ }
+ File = /
+ }
+ }
+ \end{verbatim}
+
+
+ This project was funded by Bacula Systems.
+
+
+ \section{Accurate Fileset options}
+ \label{sec:accuratefileset}
+
+ In previous versions, the accurate code used the file creation and
+ modification times to determine if a file was modified or not. Now you can specify
+ which attributes to use (time, size, checksum, permission, owner, group,
+ \dots), similar to the Verify options.
+
+ \begin{verbatim}
+ FileSet {
+ Name = Full
+ Include = {
+ Options {
+ Accurate = mcs5
+ Verify = pin5
+ }
+ File = /
+ }
+ }
+ \end{verbatim}
+
+ \begin{description}
+ \item {\bf i}
+ compare the inodes
+
+ \item {\bf p}
+ compare the permission bits
+
+ \item {\bf n}
+ compare the number of links
+
+ \item {\bf u}
+ compare the user id
+
+ \item {\bf g}
+ compare the group id
+
+ \item {\bf s}
+ compare the size
+
+ \item {\bf a}
+ compare the access time
+
+ \item {\bf m}
+ compare the modification time (st\_mtime)
+
+ \item {\bf c}
+ compare the change time (st\_ctime)
+
+ \item {\bf d}
+ report file size decreases
+
+ \item {\bf 5}
+ compare the MD5 signature
+
+ \item {\bf 1}
+ compare the SHA1 signature
+ \end{description}
+
+ \textbf{Important note:} If you decide to use checksum in Accurate jobs,
+ the File Daemon will have to read all files even if they normally would not
+ be saved. This increases the I/O load, but also the accuracy of the
+ deduplication. By default, Bacula will check modification/creation time
+ and size.
+
+ \section{Bvfs API}
+ \label{sec:bvfs}
+
+ To help developers of restore GUI interfaces, we have added new \textsl{dot
+ commands} that permit browsing the catalog in a very simple way.
+
+ \begin{itemize}
+ \item \texttt{.bvfs\_update [jobid=x,y,z]} This command is required to update the
+ Bvfs cache in the catalog. You need to run it before any access to the Bvfs
+ layer.
+
+ \item \texttt{.bvfs\_lsdirs jobid=x,y,z path=/path | pathid=101} This command
+ will list all directories in the specified \texttt{path} or
+ \texttt{pathid}. Using \texttt{pathid} avoids problems with character
+ encoding of path/filenames.
+
+ \item \texttt{.bvfs\_lsfiles jobid=x,y,z path=/path | pathid=101} This command
+ will list all files in the specified \texttt{path} or \texttt{pathid}. Using
+ \texttt{pathid} avoids problems with character encoding.
+ \end{itemize}
+
+ You can use \texttt{limit=xxx} and \texttt{offset=yyy} to limit the amount of
+ data that will be displayed.
+
+ \begin{verbatim}
+ * .bvfs_update jobid=1,2
+ * .bvfs_update
+ * .bvfs_lsdir path=/ jobid=1,2
+ \end{verbatim}
+
+ \section{Testing your tape drive}
+ \label{sec:btapespeed}
+
+ To determine the best configuration of your tape drive, you can run the new
+ \texttt{speed} command available in the \texttt{btape} program.
+
+ This command can have the following arguments:
+ \begin{itemize}
+ \item[\texttt{file\_size=n}] Specify the Maximum File Size for this test
+ (between 1 and 5GB). This counter is in GB.
+ \item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount
+ of data should be greater than your memory ($file\_size*nb\_file$).
+ \item[\texttt{skip\_zero}] This flag permits to skip tests with constant
+ data.
+ \item[\texttt{skip\_random}] This flag permits to skip tests with random
+ data.
+ \item[\texttt{skip\_raw}] This flag permits to skip tests with raw access.
+ \item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block
+ access.
+ \end{itemize}
+
+ \begin{verbatim}
+ *speed file_size=3 skip_raw
+ btape.c:1078 Test with zero data and bacula block structure.
+ btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
+ ++++++++++++++++++++++++++++++++++++++++++
+ btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
+ btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s
+ ...
+ btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s
+
+ btape.c:1090 Test with random data, should give the minimum throughput.
+ btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
+ +++++++++++++++++++++++++++++++++++++++++++
+ btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
+ btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s
+ +++++++++++++++++++++++++++++++++++++++++++
+ ...
+ btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s
+
+ \end{verbatim}
+
+ When using compression, the random test will give your the minimum throughput
+ of your drive . The test using constant string will give you the maximum speed
+ of your hardware chain. (cpu, memory, scsi card, cable, drive, tape).
+
+ You can change the block size in the Storage Daemon configuration file.
+
+ \section{New {\bf Block Checksum} Device directive}
+ You may now turn off the Block Checksum (CRC32) code
+ that Bacula uses when writing blocks to a Volume. This is
+ done by adding:
+
+ \begin{verbatim}
+ Block Checksum = no
+ \end{verbatim}
+
+ doing so can reduce the Storage daemon CPU usage slightly. It
+ will also permit Bacula to read a Volume that has corrupted data.
+
+ The default is {\bf yes} -- i.e. the checksum is computed on write
+ and checked on read.
+
+ We do not recommend to turn this off particularly on older tape
+ drives or for disk Volumes where doing so may allow corrupted data
+ to go undetected.
+
+ \section{New Bat Features}
+
+ \subsection{Media information view}
+
+ By double-clicking on a volume (on the Media list, in the Autochanger content
+ or in the Job information panel), you can access a detailed overview of your
+ Volume. (cf \ref{fig:mediainfo}.)
+ \begin{figure}[htbp]
+ \centering
+ \includegraphics[width=13cm]{\idir bat11.eps}
+ \caption{Media information}
+ \label{fig:mediainfo}
+ \end{figure}
+
+ \subsection{Job information view}
+
+ By double-clicking on a Job record (on the Job run list or in the Media
+ information panel), you can access a detailed overview of your Job. (cf
+ \ref{fig:jobinfo}.)
+ \begin{figure}[htbp]
+ \centering
+ \includegraphics[width=13cm]{\idir bat12.eps}
+ \caption{Job information}
+ \label{fig:jobinfo}
+ \end{figure}
+
+ \subsection{Autochanger content view}
+
+ By double-clicking on a Storage record (on the Storage list panel), you can
+ access a detailed overview of your Autochanger. (cf \ref{fig:jobinfo}.)
+ \begin{figure}[htbp]
+ \centering
+ \includegraphics[width=13cm]{\idir bat13.eps}
+ \caption{Autochanger content}
+ \label{fig:achcontent}
+ \end{figure}
+
+ \section{Console timeout option}
+ You can now use the -u option of bconsole to set a timeout for each command.
+
+ \chapter{New Features in Released Version 3.0.2}
+
++>>>>>>> ce16a41849ac5434c59158bfb03ec94c11334ef8
This chapter presents the new features added to the
Released Bacula Version 3.0.2.