
            Chapter 16. Using AMANDA
Prev  Part IV. Various Information  Next

-------------------------------------------------------------------------------

Chapter 16. Using AMANDA


John R. Jackson

Original text
AMANDA Core Team
<jrj@purdue.edu>

Gavin Henry

XML-conversion
Suretec Systems Ltd.
<ghenry@suretecsystems.com>

Stefan G. Weichinger

XML-conversion, Updates
AMANDA Core Team
<sgw@amanda.org>
Table of Contents


  An_Introduction

  AMANDA_Features

  Future_Capabilities_of_AMANDA

  AMANDA_Resources

  Installing_AMANDA


        Install_Related_Packages

        Perform_Preliminary_Setup

        Configure_the_AMANDA_Build

        Build_and_Install_AMANDA

        Configuring_AMANDA

        Decide_on_a_Tape_Server

        Decide_Which_Tape_Devices_to_Use

        Decide_Whether_to_Use_Compression

        Decide_Where_the_Holding_Space_Will_Be

        Compute_Your_Dump_Cycle

        Copy_and_Edit_the_Default_Configuration_File

        Configure_the_Holding_Disk

        Configure_Tape_Devices_and_Label_Tapes

        Configure_Backup_Clients

        Test_and_Debug_Setup


  Operating_Amanda


        Run_amdump

        Read_AMANDA's_Reports

        Monitor_Tape_and_Holding_Disk_Status

        Adding_Tapes_at_a_Particular_Position_in_the_Cycle

        Miscellanous_Operational_Notes


  Advanced_AMANDA_Configuration


        Adjust_the_Backup_Cycle

        Adjust_Parallelism

        Monitor_for_Possible_Improvements

        Excluding_Files


  Restoring_with_AMANDA


        Configuring_and_Using_amrecover

        Using_amrestore

        Restoring_Without_AMANDA



Note

Refer to http://www.amanda.org/docs/using.html for the current version of this
document.

An Introduction


Note

This chapter was written by John R. Jackson with input from Alexandre Oliva. It
is part of the O'Reilly book "Unix Backup & Recovery" by W. Curtis Preston and
has been provided online at http://www.backupcentral.com/amanda.html since the
first edition of this book.
During the Docbook-conversion of the AMANDA-docs we asked for permission to
include this chapter in the Official AMANDA documentation and W. Curtis Preston
allowed to us to include the now converted version. There will be some updates
to this chapter in the next few months to reflect various changes and
enhancements.
You can find online versions of this chapter at http://www.amanda.org/docs/
using.html and at http://www.backupcentral.com/amanda.html.
AMANDA, the Advanced Maryland Automated Network Disk Archiver, is a public
domain utility developed at the University of Maryland. It is as advanced as a
free backup utility gets, and has quite a large user community. AMANDA allows
you to set up a single master backup server to back up multiple hosts to a
single backup drive. (It also works with a number of stackers.) AMANDA uses
native dump and/or GNU-tar, and can back up a large number of workstations
running multiple versions of Unix. Recent versions can also use SAMBA to back
up Microsoft Windows (95/98/NT/2000)-based hosts. More information about AMANDA
can be found at http://www.amanda.org
AMANDA was written primarily by James da Silva at the Department of Computer
Science of the University of Maryland around 1992. The goal was to be able to
back up large numbers of client workstations to a single backup server machine.
AMANDA was driven by the introduction of large capacity tape drives, such as
ExaByte 8mm and DAT 4mm. With these drives, and the increased number of
personal workstations, it no longer made sense to back up individual machines
to separate media. Coordinating access and providing tape hardware was
prohibitive in effort and cost. A typical solution to this problem reaches out
to each client from the tape host and dumps areas one by one across the
network. But this usually cannot feed the tape drive fast enough to keep it in
streaming mode, causing a severe performance penalty.

Note

Since AMANDA is optimized to take advantage of tape drives, we will use the
word tape throughout this section. However, that doesn't mean that you couldnt
use it with an optical or CD-R drive.
The AMANDA approach is to use a "holding disk" on the tape server machine, do
several dumps in parallel into files in the holding disk, and have an
independent process take data out of the holding disk. Because most dumps are
small partials, even a modest amount of holding disk space can provide an
almost optimal flow of dump images onto tape.
AMANDA also has a unique approach to scheduling dumps. A "dump cycle" is
defined for each area to control the maximum time between full dumps. AMANDA
takes that information, statistics about past dump performance, and estimates
on the size of dumps for this run to decide which backup level to do. This gets
away from the traditional static "it's Friday so do a full dump of /usr on
client A" approach and frees AMANDA to balance the dumps so the total run time
is roughly constant from day to day.
AMANDA is freely-available software maintained by the AMANDA Users Group. Based
on membership of AMANDA-related mailing lists, there are probably well over
1500 sites using it. This chapter is based on AMANDA version 2.4.2. Updated
versions of this section will be available with the AMANDA source code.

AMANDA Features

AMANDA is designed to handle large numbers of clients and data, yet is
reasonably simple to install and maintain. It scales well, so small
configurations, even a single host, are possible. The code is portable to a
large number of Unix platforms. It calls standard backup software, such as
vendor provided dump or GNU-tar, to perform actual client dumping. There is
also support for backing up Windows-based hosts via SAMBA. There is no
Macintosh support yet.
AMANDA provides its own network protocols on top of TCP and UDP. It does not,
for instance, use rsh or rdump/rmt. Each client backup program is instructed to
write to standard output, which AMANDA collects and transmits to the tape
server host. This allows AMANDA to insert compression and encryption and also
gather a catalogue of the image for recovery. Multiple clients are typically
backed up in parallel to files in one or more holding disk areas. A separate
tape writing process strives to keep the tape device streaming at maximum
throughput. AMANDA can run direct to tape without holding disks, but with
reduced performance.
AMANDA supports using more than one tape in a single run, but does not yet
split a dump image across tapes. This also means it does not support dump
images larger than a single tape. AMANDA currently starts a new tape for each
run and does not provide a mechanism to append a new run to the same tape as a
previous run, which might be an issue for small configurations.
AMANDA supports a wide range of tape storage devices. It uses basic operations
through the normal operating system I/O subsystem and a simple definition of
characteristics. New devices are usually trivial to add. Several tape changers,
stackers, and robots are supported to provide truly hands-off operation. The
changer interface is external to AMANDA and well-documented, so unsupported
changers can be added without a lot of effort.
Either the client or tape server may do software compression, or hardware
compression may be used. On the client side, software compression reduces
network traffic. On the server side, it reduces client CPU load. Software
compression may be selected on an image-by-image basis. If Kerberos is
available, clients may use it for authentication and dump images may be
encrypted. Without Kerberos, .amandahosts authentication (similar to .rhosts)
is used, or AMANDA may be configured to use .rhosts (although rsh/rlogin/rexec
are not themselves used). AMANDA works well with security tools like TCP
Wrappers (ftp://info.cert.org/pub/network_tools) and firewalls.
Since standard software is used for generating dump images and software
compression, only normal Unix tools such as mt, dd, and gunzip/uncompress are
needed to recover a dump image from tape if AMANDA is not available. When
AMANDA software is available, it locates which tapes are needed and finds
images on the tapes.
AMANDA is meant to run unattended, such as from a nightly cron job. Client
hosts that are down or hung are noted and bypassed. Tape errors cause AMANDA to
fall back to ?degraded? mode where backups are still performed but only to the
holding disks. They may be flushed to tape by hand after the problem is
resolved.
AMANDA has configuration options for controlling almost all aspects of the
backup operation and provides several scheduling methods. A typical
configuration does periodic full dumps with partial dumps in between. There is
also support for:

* Periodic archival backup, such as taking full dumps to a vault away from the
  primary site.
* Incremental-only backups where full dumps are done outside of AMANDA, such as
  very active areas that must be taken offline, or no full dumps at all for
  areas that can easily be recovered from vendor media.
* Always doing full dumps, such as database areas that change completely
  between each run or critical areas that are easier to deal with during an
  emergency if they are a single-restore operation.

It's easy to support multiple configurations on the same tape server machine,
such as a periodic archival configuration along side a normal daily
configuration. Multiple configurations can run simultaneously on the same tape
server if there are multiple tape drives.
Scheduling of full dumps is typically left up to AMANDA. They are scattered
throughout the dump cycle to balance the amount of data backed up each run.
It's important to keep logs of where backup images are for each area (which
AMANDA does for you), since they are not on a specific, predictable, tape
(e.g., the Friday tape will not always have a full dump of /usr for client A).
The partial backup level is also left to AMANDA. History information about
previous levels is kept and the backup level automatically increases when
sufficient dump size savings will be realized.
AMANDA uses a simple tape management system and protects itself from
overwriting tapes that still have valid dump images and from tapes not
allocated to the configuration. Images may be overwritten when a client is down
for an extended period or if not enough tapes are allocated, but only after
AMANDA has issued several warnings. AMANDA can also be told to not reuse
specific tapes.
A validation program may be used before each run to note potential problems
during normal working hours when they are easier to correct. An activity report
is sent via e-mail after each run. AMANDA can also send a report to a printer
and even generate sticky tape labels.
There is no graphical interface. For administration, there is usually only a
single simple text file to edit, so this is not much of an issue. For security
reasons, AMANDA does not support user controlled file recovery. There is an
ftp-like restore utility for administrators to make searching online dump
catalogues easier when recovering individual files.

Future Capabilities of AMANDA

In addition to the usual enhancements and fixes constantly being added by the
AMANDA Core Development Team, three main changes are in various stages of
development.

* A new internal security framework will make it easier for developers to add
  other security methods, such as SSH (ftp://ftp.cs.hut.fi/pub/ssh/) and SSL
  (Secure Socket Layer).
* Another major project is a redesign of how AMANDA runs the client dump
  program. This is currently hardcoded for a vendor dump program, GNU-tar or
  SAMBA tar. The new mechanism will allow arbitrary programs such as cpio,
  star, and possibly other backup systems. It will also add optional pre-dump
  and post-dump steps that can be used for locking and unlocking, and snapshots
  of rapidly changing data such as databases or the Windows registry.
* The third major project is a redesign of the output subsystem to support non-
  tape media such as CD-ROM, local files, remote files via tools like rcp and
  ftp, remote tapes, etc. It will also be able to split dump images across
  media, handle multiple simultaneous media of different types such as writing
  to multiple tapes or a tape and a CD-ROM, and handle writing copies of images
  to multiple media such as a tape to keep on site and a CD-ROM or duplicate
  tape for archiving.
* In addition, the output format will be enhanced to include a file-1 and a
  file-n. The idea is to put site-defined emergency recovery tools in file-1
  (the first file on the output) that can be retrieved easily with standard
  non-AMANDA programs like tar, then use those tools to retrieve the rest of
  the data. The file-n area is the last file on the output and can contain
  items such as the AMANDA database, which would be complete and up to date by
  the time file-n is written.


AMANDA Resources

AMANDA may be obtained via the web page http://www.amanda.org or with anonymous
ftp at ftp://ftp.amanda.org/pub/amanda.A typical release is a gzip compressed
tar file with a name like amanda-2.4.1.tar.gz, which means it is major version
2.4 and minor version 1. There are occasional patch releases that have a name
like amanda-2.4.1p1.tar.gz (release 2.4.1 plus patch set 1). Beta test pre-
releases have a names like amanda-2.5.0b3.tar.gz (third beta test pre-release
of 2.5.0).
Some operating system distributions provide pre-compiled versions of AMANDA,
but because AMANDA hardcodes some values into the programs, they may not match
the configuration. Work is being done to move these values to run-time
configuration files, but for now AMANDA should be built from source.
The AMANDA web page contains useful information about patches not yet part of a
release, how to subscribe to related mailing lists, and pointers to mailing
list archives. Subscribe to at least amanda-announce to get new release
announcements or amanda-users to get announcements plus see problems and
resolutions from other AMANDA users. The amanda-users mailing list is a
particularly good resource for help with initial setup as well as problems.
When posting to it, be sure to include the following information:

* AMANDA version
* OS version on the server and client(s)
* Exact symptoms seen, such as error messages, relevant sections of e-mail
  reports, debugging and log files
* Anything unusual or recent changes to the environment
* A valid return e-mail address

Finally, the docs directory in the release contains several files with helpful
information, such as a FAQ.

Installing AMANDA

After downloading and unpacking the AMANDA release, read the README, docs/
INSTALL, and docs/SYSTEM.NOTES files. They contain important and up-to-date
information about how to set up AMANDA.

Install Related Packages

Several other packages may be required to complete an AMANDA install. Before
continuing, you should locate and install packages your environment will need.
In particular, consider the following:


  GNU-tar 1.12 or later  www.gnu.org
      The GNU version of the standard tar program with enhancements to do
      partial backups and omit selected files. It is one of the client backup
      programs AMANDA knows how to use.

  Samba 1.9.18p10 or later  www.samba.org
      SAMBA is an implementation of the System Message Block (SMB) protocol
      used by Windows-based systems for file access. It contains a tool,
      smbclient, that AMANDA can use to back them up.

  Perl 5.004 or later  www.perl.org
      Perl is a scripting programming language oriented toward systems
      programming and text manipulation. It is used for a few optional AMANDA
      reporting tools and by some tape changers.

  GNU readline 2.2.1 or later  www.gnu.org
      The GNU readline library may be incorporated into interactive programs to
      provide command-line history and editing. It is built into the AMANDA
      amrecover restoration tool, if available.

  GNU awk 3.0.3 or later  www.gnu.org
      The GNU version of the awk programming language contains a common version
      across platforms and some additional features. It is used for the
      optional AMANDA amplot statistics tool.

  Gnuplot 3.5 or later  ftp://ftp.dartmouth.edu/pub/gnuplot/
      This gnuplot library (which has nothing to do with the GNU tools, see the
      accompanying README) is a graph plotting package. It is used for the
      optional AMANDA amplot statistics tool.

Be sure to look in the AMANDA patches directory and the patches section on the
web page for updates to these packages. SAMBA versions before 2.0.3, in
particular, must have patches applied to make them work properly with Amanda.
Without the patches, backups appear to work but the resulting images are
corrupt.
When AMANDA is configured, locations of additional software used on the
clients, such as GNU-tar and SAMBA, get built into the AMANDA programs, so
additional software must be installed in the same place on the AMANDA build
machine and all the clients.

Perform Preliminary Setup

A typical AMANDA configuration runs as a user other than root, such as backup
or amanda, given just enough permissions to do backups. Often, direct login as
the user is disallowed. To use the vendor dump program instead of GNU-tar, the
AMANDA user must be in a group with read access to the raw disk devices.
Membership in this group should be tightly controlled since it opens up every
file on the client for viewing.
There are two ways to link AMANDA and the raw device group membership. Either
put the AMANDA user in the group that currently owns the raw devices, as the
primary group or as a secondary, or pick a new group for AMANDA and change the
group ownership of the devices. AMANDA (actually, the vendor dump program)
needs only read access, so turn off group write permission. Turn off all
"world" access.
To use GNU-tar, AMANDA runs it under a setuid-root program that grants the
needed permissions. The GNU version of tar must be used with AMANDA. Vendor
supplied versions (unless they originated from GNU and are at least version
1.12) do not work because AMANDA depends on additional features.

Configure the AMANDA Build

Use the AMANDA user and group for the --with-user and --with-group options to
./configure. For instance, to use amanda for the user and backup as the group:
./configure --with-user=amanda --with-group=backup ...
No other options are required for ./configure, but all the possibilities may be
seen with ./configure --help. Don't get carried away changing options. The
defaults are usually suitable and some require experience with AMANDA to fully
understand. Leave --with-debugging enabled so debug log files are created on
the clients. They take very little space but are often necessary for tracking
down problems.
The normal build creates both tape server and client software. The tape server
host is often backed up by AMANDA and needs the client parts. However, the
clients usually do not need the tape server parts. A little disk space and
build time may be saved by adding --without-server to the ./configure arguments
when building for them.
The default security mechanism uses a file formatted just like .rhosts but
called .amandahosts. This keeps AMANDA operations separate from normal rsh/rcp
work that might use the same user. It is not recommended, but .rhosts and
hosts.equiv may be used by adding --without-amandahosts to the ./configure
arguments.
The TCP ports used for data transfer may be restricted with --with-portrange to
use AMANDA between hosts separated by a firewall. A typical entry would be: ./
configure --with-portrange=50000,50100 ... This does not affect the initial UDP
requests made from the tape server to the clients. The amanda UDP port
(typically 10080) must be allowed through the firewall.
If more than just a few ./configure options are used, they may be put in /usr/
local/share/config.site or /usr/local/etc/config.site to keep them the same
from build to build. An example is in example/config.site.

Build and Install AMANDA

After ./configure is done, run make to build AMANDA, then make install to
install it. The make install step must be done as root because some AMANDA
programs require system privileges. Unless the base location is changed, AMANDA
installs into these areas:


  /usr/local/sbin
      Programs administrators run.

  /usr/local/lib
      Libraries.

  /usr/local/libexec
      Private programs only AMANDA uses.

  /usr/local/man
      Documentation.

Now is a good time to read the main AMANDA man page. It provides an overview of
AMANDA, a description of each program, and detailed configuration information.
The following programs must be setuid-root (which make install as root does).
The first group (amcheck,dumper, and planner) run on the tape server machine
and need a privileged network port for secure communication with the clients.
The others are utility routines optionally used on the clients, depending on
the dump program used and operating system type.


  sbin/amcheck
      AMANDA sanity checker program

  libexec/dumper
      Client communication program

  libexec/planner
      Estimate gathering program

  libexec/killpgrp
      Used to kill vendor dump programs that run as root

  libexec/rundump
      Setuid wrapper for systems that need to run the vendor dump program as
      root

  libexec/runtar
      Setuid wrapper to run GNU-tar as root

All these programs are installed with world access disabled and group access
set to the AMANDA group from --with-group. Be sure all members of that group
are trustworthy since rundump and runtar in particular give access to every
file on the system. If AMANDA software is made available via NFS, be sure the
mount options allow setuid programs. Also, if GNU-tar is used, root needs write
access to /usr/local/var/amanda/gnutar-lists (or the --with-gnutar-list value
to ./configure) to store information about each partial level.
If the build has trouble or AMANDA needs to be rebuilt, especially with
different ./configure options, the following sequence makes sure everything is
cleaned up from the previous build: make distclean ./configure ... make make
install (as root) Problems with the ./configure step can sometimes be diagnosed
by looking at the config.log file. It contains detailed output of tests ./
configure runs. Note that it is normal for many of the tests to "fail" as part
of ./configure determining how to access various features on the system.
A common problem when using the GNU C compiler is not re-installing it after
the underlying operating system version changes. Gcc is particularly sensitive
to system header files and must be re-installed or have its fixincludes step
rerun (see the gcc release installation notes) if the operating system is
upgraded. Running gcc --verbose shows where gcc gets its information, and
contains an indication of the operating system version expected.
AMANDA needs changes to the network services and inetd configuration files. The
client-src/patch-system script should be able to set up systems in most cases.
It does not currently handle systems that deliver service entries via YP/NIS.
If the script does not work, add the following entries to the services file
(e.g., /etc/services) or YP/NIS map: Amanda 10080/udp Amandaidx 10082/tcp
Amidxtape 10083/tcp
Each client needs an entry in the inetd configuration file (e.g., /etc/
inetd.conf) like this, substituting the AMANDA user for Amanda and the full
path to the AMANDA libexec directory for PATH: amanda dgram udp wait Amanda /
PATH/libexec/amandad amandad
The amanda service is used by all AMANDA controlling programs to perform
functions on the clients.
The tape server host needs entries like these if the amrecover tool is to be
used: amandaidx stream tcp nowait Amanda /PATH/libexec/amindexd amindexd
amidxtape stream tcp nowait Amanda /PATH/libexec/amidxtaped amidxtaped
The amandaidx service provides access to the catalogues, while amidxtape
provides remote access to a tape device. After every inetd configuration file
change, send a HUP signal to the inetd process and check the system logs for
errors.

Configuring AMANDA

Once installed, AMANDA must be configured to your environment.

Decide on a Tape Server

The first thing to decide is what machine will be the AMANDA tape server.
AMANDA can be CPU-intensive if configured to do server compression, and almost
certainly network and I/O-intensive. It does not typically use much real
memory. It needs direct access to a tape device that supports media with enough
capacity to handle the expected load.
To get a rough idea of the backup sizes, take total disk usage (not capacity),
Usage, and divide it by how often full dumps will be done, Runs. Pick an
estimated run-to-run change rate, Change. Each AMANDA run, on average, does a
full dump of Usage/Runs. Another Usage/Runs*Change is done of areas that got a
full dump the previous run, Usage/Runs*Change* is done of areas that got a full
dump two runs ago, and so on.
For example, with 100 GB of space in use, a full dump every seven runs (e.g.,
days) and estimated run-to-run changes (new or altered files) of 5 percent:

  	  100 GBytes / 7              = 14.3 GB
  	  100 GBytes / 7 * 5%         =  0.7 GB
  	  100 GBytes / 7 * 5% * 2     =  1.4 GB
  	  100 GBytes / 7 * 5% * 3     =  2.1 GB
  	  100 GBytes / 7 * 5% * 4     =  2.9 GB
  	  100 GBytes / 7 * 5% * 5     =  3.6 GB
  	  100 GBytes / 7 * 5% * 6     =  4.3 GB
  	                              = 29.3 GB
  	

If 50 percent compression is expected, the actual amount of tape capacity
needed for each run, which might be on more than one tape, would be 14.7 GB.
This is very simplistic, and could be improved with greater knowledge of actual
usage, but should be close enough to start with. It also gives an estimate of
how long each run will take by dividing expected capacity by drive speed.

Decide Which Tape Devices to Use

Unix operating systems typically incorporate device characteristics into the
file name used to access a tape device. The two to be concerned with are
"rewind" and "compression." AMANDA must be configured with the non-rewinding
tape device, so called because when the device is opened and closed it stays at
the same position and does not automatically rewind. This is typically a name
with an n in it, such as /dev/rmt/0n or /dev/nst0. On AIX, it is a name with a
.1 or .5 suffix.
Put the AMANDA user in the group that currently owns the tape device, either as
the primary group or as a secondary, or pick a new group for AMANDA and change
the group ownership of the device. AMANDA needs both read and write access.
Turn off all "world" access.

Decide Whether to Use Compression

Dump images may optionally be compressed on the client, the tape server, or the
tape device hardware. Software compression allows AMANDA to track usage and
make better estimates of image sizes, but hardware compression is more
efficient of CPU resources. Turn off hardware compression when using software
compression on the client or server. See the operating system documentation for
how hardware compression is controlled; on many systems it is done via the
device file name just like the non-rewinding flag. AIX uses the chdev command.

Decide Where the Holding Space Will Be

If at all possible, allocate some holding disk space for AMANDA on the tape
server. Holding disk space can significantly reduce backup time by allowing
several dumps to be done at once while the tape is being written. Also, for
streaming tape devices, AMANDA keeps the device going at speed, and that may
increase capacity. AMANDA may be configured to limit disk use to a specific
value so it can share with other applications, but a better approach is to
allocate one or more inexpensive disks entirely to AMANDA.
Ideally, there should be enough holding disk space for the two largest backup
images simultaneously, so one image can be coming into the holding disk while
the other is being written to tape. If that is not practical, any amount that
holds at least a few of the smaller images helps. The AMANDA report for each
run shows the size of the dump image after software compression (if enabled).
That, in addition to the amplot and amstatus tools, may be used to tune the
space allocated.

Compute Your Dump Cycle

 Decide how often AMANDA should do full dumps. This is the "dump cycle." Short
periods make restores easier because there are fewer partials, but use more
tape and time. Longer periods let AMANDA spread the load better but may require
more steps during a restore.
Large amounts of data to back up or small capacity tape devices also affect the
dump cycle. Choose a period long enough that AMANDA can do a full dump of every
area during the dump cycle and still have room in each run for the partials.
Typical dump cycles are one or two weeks. Remember that the dump cycle is an
upper limit on how often full dumps are done, not a strict value. AMANDA runs
them more often and at various times during the cycle as it balances the backup
load. It violates the limit only if a dump fails repeatedly, and issues
warnings in the e-mail report if that is about to happen.
By default, AMANDA assumes it is run every day. If that is not the case, set
"runs per cycle" (described below) to a different value. For instance, a dump
cycle of seven days and runs per cycle of five would be used if runs are done
only on weekdays.
Normally, AMANDA uses one tape per run. With a tape changer (even the chg-
manual one), the number of tapes per run may be set higher for extra capacity.
This is an upper limit on the number of tapes. AMANDA uses only as much tape as
it needs. AMANDA does not yet do overflow from one tape to another. If it hits
end of tape (or any other error) while writing an image, that tape is
unmounted, the next one is loaded, and the image starts over from the
beginning. This sequence continues if the image cannot fit on a tape.
Runs per cycle and tapes per run determine the minimum number of tapes needed,
called the "tape cycle." To ensure the current run is not overwriting the last
full dump, one more run should be included. For instance, a dump cycle of two
weeks, with default runs per cycle of 14 (every day) and default tapes per run
of one, needs at least 15 tapes (14+1 runs * one tape/run). Using two tapes per
run needs 30 tapes (14+1 runs * two tapes/run). Doing backups just on weekdays
with a dump cycle of two weeks, runs per cycle of 10, and two tapes per run
needs 22 tapes (10+1 runs * two tapes/run).
More tapes than the minimum should be allocated to handle error situations.
Allocating at least two times the minimum allows the previous full dump to be
used if the most recent full dump cannot be read. Allocating more tapes than
needed also goes back further in time to recover lost files. AMANDA does not
have a limit on the number of tapes in the tape cycle.

Copy and Edit the Default Configuration File

Pick a name for the configuration (the name Daily will be used for the rest of
this section). Create a directory on the tape server machine to hold the
configuration files, typically /usr/local/etc/amanda/Daily. Access to this
directory (or perhaps its parent) should be restricted to the AMANDA group or
even just the AMANDA user.
Each tape assigned to a configuration needs a unique label. For this example,
we'll use the configuration name, a dash, and a three-digit suffix, Daily-000
through Daily-999. Do not use blanks, tabs, slashes (/), shell wildcards, or
non-printable characters.
AMANDA limits network usage so backups do not take all the capacity. This limit
is imposed when AMANDA is deciding whether to perform a dump by estimating the
throughput and adding that to dumps that are already running. If the value
exceeds the bandwidth allocated to AMANDA, the dump is deferred until enough
others complete. Once a dump starts, AMANDA lets underlying network components
do any throttling.
Copy the template example/amanda.conf file to the configuration directory and
edit it. Full documentation is in the amanda man page. There are many
parameters, but probably only a few need to be changed. Start with the
following (some of which are described later):


  org
      This string will be in the Subject line of AMANDA e-mail reports.

  mailto
      Target address for AMANDA e-mail reports.

  dumpuser
      Same as --with-user from ./configure.

  dumpcycle
      The dump cycle.

  runspercycle
      The runs per cycle.

  tapecycle
      The tape cycle.

  runtapes
      Number of tapes to use per run.

  tapedev
      The no-rewind tape device if a changer is not being used, or if the
      manual changer is being used.

  tapetype
      Type of tape media.

  netusage
      Network bandwidth allocated to AMANDA.

  labelstr
      A regular expression (grep pattern) used to make sure each tape is
      allocated to this AMANDA configuration. Our example might use Daily-[0-9]
      [0-9][0-9].

The following parameters probably do not need to be changed, but look at their
values to know where AMANDA expects to find things:


  infofile
      Location of AMANDA history database. Older versions of AMANDA used this
      as the base name of a database file. Newer versions use this as a
      directory name.

  logdir
      Directory where AMANDA logs are stored.

  indexdir
      Location of optional AMANDA catalogue database.


Configure the Holding Disk

Define each holding disk in an amanda.conf holdingdisk section. If partitions
are dedicated to AMANDA, set the use value to a small negative number, such as
-10 MB. This tells AMANDA to use all but that amount of space. If space is
shared with other applications, set the value to the amount AMANDA may use,
create the directory and set the permissions so only the AMANDA user can access
it.
Set a chunksize value for each holding disk. Negative numbers cause AMANDA to
write dumps larger than the absolute value directly to tape, bypassing the
holding disk. Positive numbers split dumps in the holding disk into chunks no
larger than the chunksize value. Even though the images are split in the
holding disk, they are written to tape as a single image. At the moment, all
chunks for a given image go to the same holding disk.
Older operating systems that do not support individual files larger than 2GB
need a chunk size slightly smaller, such as 2000 MB, so the holding disk can
still be used for very large dump images. Systems that support individual files
larger than 2 GB should have a very large value, such as 2000 GBytes.

Configure Tape Devices and Label Tapes

AMANDA needs to know some characteristics of the tape media. This is set in a
tapetype section. The example amanda.conf, web page, and amanda-users mailing
list archives have entries for most common media. Currently, all tapes should
have the same characteristics. For instance, do not use both 60-meter and 90-
meter DAT tapes since AMANDA must be told the smaller value, and larger tapes
may be underutilized.
If the media type is not listed and there are no references to it in the
mailing list archives, go to the tape-src directory, make tapetype, mount a
scratch tape in the drive and run ./tapetype NAME DEV where NAME is a text name
for the media and DEV is the no-rewind tape device with hardware compression
disabled. This program rewinds the tape, writes random data until it fills the
tape, rewinds, and then writes random data and tape marks until it fills the
tape again. This can take a very long time (hours or days). When finished, it
generates a new tapetype section to standard output suitable for adding to the
amanda.conf file. Post the results to the amanda-users mailing list so others
may benefit from your effort.
When using hardware compression, change the length value based on the estimated
compression rate. This typically means multiplying by something between 1.5 and
2.0.
The length and filemark values are used by AMANDA only to plan the backup
schedule. Once dumps start, AMANDA ignores the values and writes until it gets
an error. It does not stop writing just because it reaches the tapetype length.
AMANDA does not currently use the tapetype speed parameter.
Once the tapetype definition is in amanda.conf, set the tapetype parameter to
reference it.
Without special hardware to mount tapes, such as a robot or stacker, either set
the tapedev parameter to the no-rewind device name or set up the AMANDA chg-
manual changer. The manual changer script prompts for tape mounts as needed.
The prompts normally go to the terminal of the person running AMANDA, but the
changer may be configured to send requests via e-mail or to some other system
logging mechanism.
To configure the manual changer, set tapedev to the no-rewind tape device and
set tpchanger to chg-manual. To send tape mount prompts someplace other than
the terminal, which is necessary if AMANDA is run from a cron job, see the
request shell function comments in changer-src/chg-manual.sh.in.
Another common tape changer is chg-multi. This script can drive stackers that
advance to the next tape when the drive is unloaded or it can use multiple tape
drives on the tape sever machine to emulate a changer. The chg-multi script has
a configuration file and a state file. Put the path to the configuration file
in the amanda.conf changerfile parameter. There is a sample in example/chg-
multi.conf. It has the following keyword/value pairs separated by whitespace:


  firstslot
      Number of the first slot in the device.

  lastslot
      Number of the last slot in the device.

  gravity
      Set to 1 if the device is gravity fed and cannot go backwards, otherwise
      set to 0.

  needeject
      Set to 1 if the tape needs to be ejected to advance to a new tape,
      otherwise set to 0.

  multieject
      Set to 1 if sending multiple ejects causes the changer to advance through
      the tapes, otherwise set to 0. If set to 1, gravity must also be set to 1
      because the script currently does not handle carousels that wrap back
      around to the first tape after the last one. Also, needeject must be set
      to 0.

  ejectdelay
      Set to a number of seconds of extra delay after ejecting a tape if it
      takes a while before the next tape is ready.

  statefile
      Set to the path to a file chg-multi builds and maintains with the current
      state of the changer.

  slot
      Repeat as needed to define all the slots and corresponding tape devices.
      The first field after slot is the slot number. The next field is the no-
      rewind tape device name. For changers that have a single tape device,
      repeat the device name for each slot. To emulate a changer by using
      multiple tape devices, list a different no-rewind tape device for each
      slot.

chg-multi may also be used as a framework to write a new changer. Look for XXX
comments in the script and insert calls to commands appropriate for the device.
Make any source changes to the changer-src/chg-multi.sh.in file. That file is
processed by ./configure to generate chg-multi.sh, which turns into chg-multi
with make. If chg-multi.sh or chg-multi is altered, the changes will be lost
the next time AMANDA is rebuilt.
A third popular changer is chg-scsi. It can drive devices that have their own
SCSI interface. An operating system kernel module may need to be installed to
control such devices, like sst for Solaris, which is released with AMANDA, or
chio, available for various systems. As with chg-multi, set the amanda.conf
changerfile parameter to the changer configuration file path. There is a sample
in example/chg-scsi.conf. The initial section has parameters common to the
entire changer:


  number_configs
      Set to the number of tape drives connected to this changer. The default
      is 1.

  eject
      Set to 1 if tape drives need an explicit eject command before advancing
      to the next tape, otherwise set to 0.

  sleep
      Set to the number of seconds to wait for a tape drive to become ready.

  changerdev
      Set to the device path of the changer. This may be set in the amanda.conf
      file instead of here if preferred. Following the common parameters is a
      section for each tape device:

  config
      Set to the configuration number, starting with 0.

  drivenum
      Set to the tape drive number, usually the same as the configuration
      number.

  dev
      Set to the no-rewind device name of the tape drive.

  startuse
      Set to the number of the first slot served by this drive.

  enduse
      Set to the number of the last slot served by this drive.

  statfile
      Set to the path to a file chg-scsi will build and maintain with the
      current state of this drive.

Test any changer setup with the amtape command. Make sure it can load a
specific tape with the slot NNN suboption, eject the current tape with eject
and advance to the next slot with slot next.
Tapes must be pre-labeled with amlabel so AMANDA can verify the tape is one it
should use. Run amlabel as the AMANDA user, not root. For instance:

  	
  	    # su amanda -c "amlabel Daily Daily-123 slot 123"
  	
  	


Configure Backup Clients

After tapes are labeled, pick the first client, often the tape server host
itself, and the filesystems or directories to back up. For each area to back
up, choose either the vendor dump program or GNU-tar. Vendor dump programs tend
to be more efficient and do not disturb files being dumped, but are usually not
portable between different operating systems. GNU-tar is portable and has some
additional features, like the ability to exclude patterns of files, but alters
the last access time for every file backed up and may not be as efficient. GNU-
tar may also deal with active filesystems better than vendor dump programs, and
is able to handle very large filesystems by breaking them up by subdirectories.
Choose the type of compression for each area, if any. Consider turning off
compression of critical areas needed to bring a machine back from the dead in
case the decompression program is not available. Client compression spreads the
load to multiple machines and reduces network traffic, but may not be
appropriate for slow or busy clients. Server compression increases the load on
the tape server machine, possibly by several times since multiple dumps are
done at once. For either, if GNU GNU-zip is used, compression may be set to
fast for faster but less aggressive compression or best for slower but more
aggressive compression. Set compression to none to disable software compression
or use hardware compression.
Pick or alter an existing dumptype that matches the desired options, or create
a new one. Each dumptype should reference the global dumptype. It is used to
set options for all other dumptypes. For instance, to use the indexing
facility, enable it in the global dumptype and all other dumptypes will inherit
that value.
The indexing facility generates a compressed catalogue of each dump image.
These are useful for finding lost files and are the basis of the amrecover
program. Long dump cycles or areas with many or very active files can cause the
catalogues to use a lot of disk space. AMANDA automatically removes catalogues
for images that are no longer on tape.
Create a file named disklist in the same directory as amanda.conf and either
copy the file from example/disklist or start a new one. Make sure it is
readable by the AMANDA user. Each line in disklist defines an area to be backed
up. The first field is the client host name (fully qualified names are
recommended), the second is the area to be backed up on the client and the
third is the dumptype. The area may be entered as a disk name, (sd0a), a device
name, (/dev/rsd0)a, or a logical name, (/usr). Logical names make it easier to
remember what is being backed up and to deal with disk reconfiguration.
To set up a Windows client, set the host name to the name of the Unix machine
running SAMBA and the area to the Windows share name, such as //some-pc/C$.
Note that Unix-style forward slashes are used instead of Windows-style backward
slashes.
Enable AMANDA access to the client from the tape server host (even if the
client is the tape server host itself) by editing .amandahosts (or .rhosts,
depending on what was set with ./configure) in the AMANDA user home directory
on the client. Enter the fully qualified tape server host name and AMANDA user,
separated by a blank or tab. Make sure the file is owned by the AMANDA user and
does not allow access to anyone other than the owner (e.g. mode 0600 or 0400).
For Windows clients, put the share password in /etc/amandapass on the SAMBA
host. The first field is the Windows share name, the second is the clear text
password and the optional third field is the domain. Because this file contains
clear text passwords, it should be carefully protected, owned by the AMANDA
user and only allow user access. By default, AMANDA uses SAMBA user backup.
This can be changed with --with-samba-user to ./configure.

Test and Debug Setup

Test the setup with amcheck. As with all AMANDA commands, run it as the AMANDA
user, not root:

  	
  	    # su amanda -c "amcheck Daily"
  	
  	

Many errors reported by amcheck are described in docs/FAQ or the amcheck man
page. The most common error reported to the AMANDA mailing lists is selfcheck
request timed out, meaning amcheck was not able to talk to amandad on the
client. In addition to the ideas in docs/FAQ, here are some other things to
try:

* Are the AMANDA services listed properly in /etc/services or a YP/NIS map? The
  C program in Figure 4-1 uses the same system call as AMANDA to look up
  entries:

Example 16.1. A C Program to Check the AMANDA Service Numbers

  	
  	    #include <stdio.h>
  	    #include <string.h>
  	    #include <netdb.h>

  	    main (
  	        int argc,
  		char **argv)
  	    {
  	        char *pn;
  		char *service;
  		char *protocol = "tcp";
  		struct servent *s;
  		
  		if ((pn = strrchr (*argv, '/')) == NULL) {
  		    pn = *argv;
  		} else {
  		    pn++;
  	        } if (argc < 2) {
  		      fprintf (stderr, "usage: %s service [protocol]\n", pn);
  		      return 1;
  		}
  		service = *++argv;
  		if (argc > 2) {
  		protocol = *++argv;
  		}
  		if ((s = getservbyname (service, protocol)) == NULL) {
  		    fprintf (stderr, "%s: %s/%s lookup failed\n", pn,
  		      service, protocol);
  		    return 1;
  		}
  		printf ("%s/%s: %d\n", service, protocol,
  		  (int) ntohs (s->s_port));
  		return 0;
  	    }
  	
  	

Run it on both the tape server and client and make sure the port numbers match:

  	
  	    $ cc check-service.c -lnsl -lsocket (Solaris)
  	    $ a.out amanda udp
  	      amanda/udp: 10080
  	    $ a.out amandaidx
  	      amandaidx/tcp: 10082
  	    $ a.out amidxtape
  	      amidxtape/tcp: 10083
  	
  	


* Is there a line in the inetd configuration file on the client to start
  amandad?
* Was inetd sent a HUP signal after the configuration file was changed?
* Are there system log messages from inetd about amanda or amandad? For
  instance, inetd complains if it cannot look up the AMANDA services.
* Is /tmp/amanda/amandad/debug being updated?
* Is the access time on the amandad executable (ls -lu) being updated? If not,
  inetd is probably not able to run it, possibly because of an error in the
  inetd configuration file or a permission problem.
* Run the amandad program by hand as the AMANDA user on the client. It should
  sit for about 30 seconds, then terminate. Enter the full path exactly as it
  was given to inetd, perhaps by using copy/paste.

Do not proceed until amcheck is happy with the configuration.
For initial testing, set the record option to no in the global dumptype, but
remember to set it back to yes when AMANDA goes into normal production. This
parameter controls whether the dump program on the client updates its own
database, such as /etc/dumpdates for vendor dump.
To forget about an individual test run, use amrmtape to remove references to
the tapes used, then use amlabel to relabel them. To completely start over,
remove the files or directories named in the infofile and indexdir parameters,
the tapelist file named in the tapelist parameter, all amdump.* files in the
configuration directory and all log.* files in the directory named by the
logdir parameter. These files contain history information AMANDA needs between
runs and also what is needed to find particular dump images for restores and
should be protected when AMANDA goes into production.

Operating Amanda

Once configured, you will need to setup the automated use of AMANDA.

Run amdump

The amdump script controls a normal AMANDA backup run. However, it's common to
do site-specific things as well with a wrapper shell script around amdump.
amdump is meant to run unattended from cron. See the operating system
documentation for how to set up a cron task. Be sure it runs as the AMANDA
user, not root or the installer.
The amdump script does the following:

* If a file named hold is in the configuration directory, amdump pauses until
  it goes away. This may be created and removed by hand to temporarily delay
  AMANDA runs without having to change the cron task.
* If it looks like another copy of amdump is running, or a previous run
  aborted, amdump logs an error and terminates. If an earlier run aborted,
  amcleanup must be run. An amcleanup step should be added to the tape server
  system boot sequence to handle crashes. No backups can be performed after an
  abort or crash until amcleanup is run.
* The AMANDA planner program decides what areas to back up and at what level.
  It does this by connecting to each client and getting estimated sizes of a
  full dump, the same partial level that was done on the previous run and
  possibly the next partial level. All clients are done in parallel, but it can
  take a while to gather all this information.
* The schedule is then passed to the driver program that controls actual
  dumping. It, in turn, starts up several dumper processes (based on the
  inparallel amanda.conf parameter) and a single taper process. The taper
  process splits into two parts, a reader and a writer, to keep streaming tape
  drives busy.
* driver commands dumpers to start backups, telling each its client, area,
  options such as compression and whether the result should go to the holding
  disk or direct to tape. Each dumper connects to amandad on the client and
  sends a request describing the dump program to run and options such as
  whether to do compression or indexing. The image comes back to the dumper who
  writes it, possibly via the server compression program, into the holding disk
  or directly to a taper connection. If enabled, dumper also collects catalogue
  information generated on the client and compresses it into the indexdir area.
  The driver also commands taper to write files from the holding disk to tape
  or to prepare to receive an image directly from a dumper.
* After backups are done, amreport is run to generate the e-mail report. It
  also renames the log file for the run to a unique log.YYYYMMDD.N name.
* Old amdump.NN debug log files are rolled so only enough to match the tape
  cycle are retained.
* The amtrmidx program is run to remove old catalogues if indexing has been
  used.

There are several ways to determine which tapes AMANDA will need for a run. One
is to look at the AMANDA e-mail report from the previous run. The tapes used
during that run and those expected for the next run are listed. Another is to
run amcheck during normal working hours. In addition to showing which tapes are
needed, it makes sure things are set up properly so problems can be fixed
before the real AMANDA run. A third is to use the tape suboption of amadmin.
Without a tape changer, AMANDA expects the first tape to be mounted in the
drive when it starts. Automated tape changers should be able to locate the
tapes. The chg-manual changer prompts for the tapes.

Read AMANDA's Reports

An AMANDA report has several sections:

  	


	    These dumps were to tape Daily-009, Daily-010
	    Tonight's dumps should go onto 2 tapes: Daily-011, Daily-012.
	

	
This shows which tapes were used during the run and which tapes are needed
next.

  	
  	    FAILURE AND STRANGE DUMP SUMMARY:
  	      gurgi.cc.p /var lev 0 FAILED [Request to gurgi.cc.purdue.edu timed
  out.]
  	      gurgi.cc.p / lev 0 FAILED [Request to gurgi.cc.purdue.edu timed out.]
  	      pete.cc.pu /var/mail lev 0 FAILED ["data write: Broken pipe"]
  	      samba.cc.p //nt-test.cc.purdue.edu/F$ lev 1 STRANGE
  	      mace.cc.pu /master lev 0 FAILED [dumps too big, but cannot incremental
  dump new
  	      disk]
  	
  	

Problems found during the run are summarized in this section. In this example:

* gurgi.cc.purdue.edu was down, so all its backups failed.
* The /var/mail problem on pete.cc.purdue.edu and F$ problem on nt-
  test.cc.purdue.edu are detailed later.
* The /master area on mace.cc.purdue.edu is new to AMANDA so a full dump is
  required, but it would not fit in the available tape space for this run.


  	
  	    STATISTICS:
  	                                 Total	          Full         Daily
                                        --------        --------      --------
  	      Dump Time (hrs:min)         5:03            3:23          0:33   (0:14
  start, 0:53 idle)
  	      Output Size (meg)        20434.4         17960.0        2474.4
  	      Original Size (meg)      20434.4         17960.0        2474.4
  	      Avg Compressed Size (%)      --              --            --
  	      Tape Used (%)              137.4           120.0          17.4
  (level:#disks ...)
  	      Filesystems Dumped            90              21            69    (1:
  64 2:2 3:3)
  	      Avg Dump Rate (k/s)       1036.5          1304.3         416.2
  	      Avg Tp Write Rate (k/s)   1477.6          1511.2        1271.9
  	
  	

This summarizes the entire run. It took just over five hours, almost 3.5 hours
writing full dumps and about half an hour for partials. It took 14 minutes to
get started, mostly in the planner step getting the estimates, and taper was
idle almost one hour waiting on dumps to come into the holding disk.
In this example, hardware compression was used so Avg Compressed Size is not
applicable and Output Size written to tape matches Original Size from the
clients. About 137% of the length of the tape as defined in the tapetype was
used (remember that two tapes were written), 120% for full dumps and 17% for
partials. The Rate lines give the dump speed from client to tape server and
tape writing speed, all in KBytes per second. The Filesystems Dumped line says
90 areas were processed, 21 full dumps and 69 partials. Of the partials, 64
were level 1, two were level 2 and three were level 3.

  	
  	    FAILED AND STRANGE DUMP DETAILS:
  	
                /-- pete.cc.pu /var/mail lev 0 FAILED ["data write: Broken
  pipe"]
  	      sendbackup: start [pete.cc.purdue.edu:/var/mail level 0]
  	      sendbackup: info BACKUP=/usr/sbin/ufsdump
  	      sendbackup: info RECOVER_CMD=/usr/sbin/ufsrestore -f... -
  	      sendbackup: info end
  	      | DUMP: Writing 32 Kilobyte records
  	      | DUMP: Date of this level 0 dump: Sat Jan 02 02:03:22 1999
  	      | DUMP: Date of last level 0 dump: the epoch
  	      | DUMP: Dumping /dev/md/rdsk/d5 (pete.cc.purdue.edu:/var/mail) to
  standard output.
  	      | DUMP: Mapping (Pass I) [regular files]
  	      | DUMP: Mapping (Pass II) [directories]
  	      | DUMP: Estimated 13057170 blocks (6375.57MB) on 0.09 tapes.
  	      | DUMP: Dumping (Pass III) [directories]
  	      | DUMP: Dumping (Pass IV) [regular files]
  	      | DUMP: 13.99% done, finished in 1:02
  	      | DUMP: 27.82% done, finished in 0:52
  	      | DUMP: 41.22% done, finished in 0:42
  	
  	      /-- samba.cc.p //nt-test.cc.purdue.edu/F$ lev 1 STRANGE
  	      sendbackup: start [samba.cc.purdue.edu://nt-test/F$ level 1]
  	      sendbackup: info BACKUP=/usr/local/bin/smbclient
  	      sendbackup: info RECOVER_CMD=/usr/local/bin/smbclient -f... -
  	      sendbackup: info end
  	      ? Can't load /usr/local/samba-2.0.2/lib/smb.conf - run testparm to
  debug it
  	      | session request to NT-TEST.CC.PURD failed
  	      |                 directory \top\
  	      |                 directory \top\Division\
  	      |        238 (    2.7 kb/s) \top\Division\contract.txt
  	      |      19456 ( 169.6 kb/s)  \top\Division\stuff.doc
  	    ...
  	
  	

Failures and unexpected results are detailed here. The dump of /var/mail would
not fit on the first tape so was aborted and rerun on the next tape, as
described further in the next section.
The dump of F$ on nt-test.cc.purdue.edu failed due to a problem with the SAMBA
configuration file. It's marked STRANGE because the line with a question mark
does not match any of the regular expressions built into AMANDA. When dumping
Windows clients via SAMBA, it's normal to get errors about busy files, such as
PAGEFILE.SYS and the registry. Other arrangements should be made to get these
safely backed up, such as a periodic task on the PC that creates a copy that
will not be busy at the time AMANDA runs.

  	
  	    NOTES:
  	      planner: Adding new disk j.cc.purdue.edu:/var.
  	      planner: Adding new disk mace.cc.purdue.edu:/master.
  	      planner: Last full dump of mace.cc.purdue.edu:/src on tape Daily-012
  overwritten
  	               in 2 runs.
  	      planner: Full dump of loader.cc.purdue.edu:/var promoted from 2 days
  ahead.
  	      planner: Incremental of sage.cc.purdue.edu:/var bumped to level 2.
  	      taper: tape Daily-009 kb 19567680 fm 90 writing file: short write
  	      taper: retrying pete.cc.purdue.edu:/var/mail.0 on new tape: [writing
  file: short
  	             write]
  	      driver: pete.cc.purdue.edu /var/mail 0 [dump to tape failed, will try
  again]
  	      taper: tape Daily-010 kb 6201216 fm 1 [OK]
  	
  	

Informational notes about the run are listed here. The messages from planner
say:

* There are new disklist entries for j.cc.purdue.edu and mace.cc.purdue.edu.
* Tape Daily-012 is due to be overwritten in two more runs and contains the
  most recent full dump of /src from mace.cc.purdue.edu, so the tape cycle may
  not be large enough.
* The next scheduled full dump of /var on loader.cc.purdue.edu was moved up two
  days to improve the load balance.
* The partial dump of /var on sage.cc.purdue.edu was bumped from level 1 to
  level 2 because the higher level was estimated to save enough space to make
  it worthwhile.

The rest of the notes say taper was not able to write as much data as it
wanted, probably because of hitting end of tape. Up to that point, it had
written 19567680 KBytes in 90 files on tape Daily-009. Another attempt at the
full dump of /var/mail from pete.cc.purdue.edu was made on the next tape
(Daily-010) and it succeeded, writing 6201216 KBytes in one file.

  	
  	    DUMP SUMMARY:
  	
  	                                     DUMPER STATS                   TAPER
  STATS
        HOSTNAME  DISK           L   ORIG-KB   OUT-KB COMP%   MMM:SS   KB/
  s  MMM:SS   KB/s
        --------------------------- --------------------------------------- ---
  -----------
        boiler.cc /              1      2624     2624   --      0:13  200.1
  0:02 1076.0
        boiler.cc /home/boiler/a 1       192      192   --      0:07   26.7
  0:02  118.5
        boiler.cc /usr           1       992      992   --      0:41   24.2
  0:02  514.7
        boiler.cc /usr/local     1       288      288   --      0:09   31.2
  0:04   86.3
        boiler.cc /var           1       425     4256   --      0:21  205.9
  0:04 1104.3
        egbert.cc /              1     41952    41952   --      1:26  487.3
  0:37 1149.4
        egbert.cc /opt           1       224      224   --      0:06   37.5
  0:02  136.0
        egbert.cc -laris/install 1        64       64   --      0:11    5.8
  0:02   49.5
        gurgi.cc. /              0    FAILED ----------------------------------
  -----------
        gurgi.cc. /var           0    FAILED ----------------------------------
  -----------
        pete.cc.p /              1     13408    13408   --      0:41  328.2
  0:08 1600.5
        pete.cc.p /opt           1      3936     3936   --      1:04   61.2
  0:03 1382.6
        pete.cc.p /usr           1      1952     1952   --      0:29   67.0
  0:03  584.3
        pete.cc.p /var           1    300768   300768   --      2:33 1963.8
  2:50 1768.8
        pete.cc.p /var/mail      0   6201184  6201184   --     73:45 1401.3
  73:47 1400.8

       ...
       (brought to you by Amanda version 2.4.1p1)
  	
  	

This section (which has been abbreviated) reports each area dumped showing
client, area, backup level, sizes, time to dump and time to write to tape.
Entries are in alphabetic order by client and then by area. This is not the
same as the tape order. Tape order can be determined with the find or info
suboption of the amadmin command, amtoc can generate a tape table of contents
after a run, or amreport can generate a printed listing. By default, client
names are truncated on the right, area names on the left, to keep the report
width under 80 character. This typically leaves the unique portions of both.
Two log files are created during an AMANDA run. One is named amdump.NN, where
NN is a sequence number (1 is most recent, 2 is next most recent, etc), and is
in the same directory as amanda.conf. The file contains detailed step by step
information about the run and is used for statistics by amplot and amstatus,
and for debugging. The other file is named log.YYYYMMDD.N where YYYYMMDD is the
date of the AMANDA run and N is a sequence number in case more than one run is
made on the same day (0 for the first run, 1 for the second, etc). This file is
in the directory specified by the logdir amanda.conf parameter. It contains a
summary of the run and is the basis for the e-mail report. In fact, amreport
may be run by hand and given an old file to regenerate a report.
Old amdump.NN files are removed by the amdump script. Old log.YYYYMMDD.N files
are not automatically removed and should be cleared out periodically by hand.
Keeping a full tape cycle is a good idea. If the tape cycle is 40 and AMANDA is
run once a day, the following command would do the job:

  	
  	    #find log.????????.* -mtime +40 -print | xargs rm
  	
  	

If --with-pid-debug-files was used on ./configure, clients accumulate debug
files in /tmp/amanda (or whatever --with-debug was set to) and should be
cleaned out periodically. Without this option, client debug files have fixed
names and are reused from run to run.

Monitor Tape and Holding Disk Status

While amdump is running, amstatus can track how far along it is. amstatus may
also be used afterward to generate statistics on how many dumpers were used,
what held things up and so on.
When a tape error happens on the last tape allowed in a run (as set by
runtapes), AMANDA continues to do backups into the holding disks. This is
called degraded mode. By default, full dumps are not done and any that were
scheduled have a partial done instead. A portion of the holding disk area may
be allocated to do full dumps during degraded mode by reducing the value of the
parameter reserve in amanda.conf below 100%.
A tape server crash may also leave images in the holding disks. Run amflush, as
the AMANDA user, to flush images in the holding disk to the next tape after
correcting any problems. It goes through the same tape request mechanism as
amdump. If more than one set of dumps are in the holding disk area, amflush
prompts to choose one to write or to write them all. amflush generates an e-
mail report just like amdump.
Operating systems vary in how they report end of tape to programs. A no space
or short write error probably means end of tape. For I/O error, look at the
report to see how much was written. If it is close to the expected tape
capacity, it probably means end of tape, otherwise it means a real tape error
happened and the tape may need to be replaced the next time through the tape
cycle.
To swap out a partially bad tape, wait until it is about to be used again so
any valid images can still be retrieved. Then swap the tapes, run amrmtape on
the old tape and run amlabel on the replacement so it has a proper AMANDA
label.
If a tape is marked to not be reused with the no-reuse suboption of amadmin,
such as one that has been removed or is failing, AMANDA may want a freshly
labeled tape on the next run to get the number of tapes back up to the full
tape cycle.
If a tape goes completely bad, use amrmtape to make AMANDA forget about it. As
with marking a tape no-reuse, this may reduce the number of tapes AMANDA has in
use below the tape cycle and it may request a newly labeled tape on the next
run.

Adding Tapes at a Particular Position in the Cycle


* Run amlabel on the new tapes.
* Edit the tapelist file by hand and move the new tapes before the tape to be
  used just ahead of them. For instance, move Daily-100 before Daily-099.
* Set the date stamp on the new tapes to the same as the previous tape, e.g.
  make them the same for Daily-099 and Daily-100.
* Update the tapecycle amanda.conf parameter if new tapes are being added.

These steps let AMANDA know about all tapes, including those that do not have
data yet. When the cycle gets to the last old tape (Daily-099), the next tape
used will be the first new one (Daily-100). A new option is planned for amlabel
to do these steps automatically.

Miscellanous Operational Notes

Multiple amdump runs may be made in the same day, although catalogues are
currently stored without a timestamp so amrecover may not show all restore
possibilities. To redo a few areas that failed during the normal run, edit the
disklist file by hand to comment out all the other entries, run amdump, then
restore the disklist file.
Use the force suboption of amadmin to schedule a full dump of an area on the
next run. Run this as the AMANDA user, not root. AMANDA automatically detects
new disklist entries and schedules an initial full dump. But for areas that go
through a major change, such as an operating system upgrade or full restore,
force AMANDA to do a full dump to get things back into sync.
AMANDA does not automatically notice new client areas, so keep the disklist in
sync by hand. AMANDA usually notices areas that are removed and reports an
error as a reminder to remove the entry from the disklist. Use the delete
suboption of amadmin (as the AMANDA user) to make AMANDA completely forget
about an area, but wait until the information is not needed for restores. This
does not remove the entry from the disklist file  that must be done by hand.
NonAMANDA backups may still be done with AMANDA installed, but do not let the
client dump program update its database. For vendor dump programs, this usually
means not using the u flag, or saving and restoring /etc/dumpdates. For GNU-tar
it means the --listed-incremental flag (if used) should not point to the same
file AMANDA uses.
As with all backup systems, verify the resulting tapes, if not each one then at
least periodically or by random sample. The amverify script does a reasonably
good job of making sure tapes are readable and images are valid. For GNU-tar
images, the test is very good. For vendor dump images of the same operating
system type as the tape server machine, the test is OK but does not really
check the whole image due to the limited way the catalogue option works. For
vendor dump images from other operating systems, amverify can tell if the image
is readable from tape but not whether it is valid.
Tape drives are notorious for being able to read only what they wrote, so run
amverify on another machine with a different drive, if possible, so an
alternate is available if the primary drive fails. Make a copy of the AMANDA
configuration directory on the other machine to be able to run amverify. This
copy is also a good way to have a backup of the AMANDA configuration and
database in case the tape server machine needs to be recovered.

Advanced AMANDA Configuration

Once you have AMANDA running for a while, you may choose to do some additional
advanced configuration.

Adjust the Backup Cycle

Several dumptype parameters control the backup level AMANDA picks for a run:


  dumpcycle
      Maximum days between full dumps.

  strategy nofull
      Never schedule (or run) a full dump.

  strategy incronly
      Only schedule non-full dumps.

Note that dumpcycle is both a general amanda.conf parameter and a specific
dumptype parameter. The value in a specific dumptype takes precedence. To
handle areas that change significantly between each run and should get a full
dump each time (such as the mail spool on a busy e-mail server or a database
area), create a dumptype based on another dumptype with attributes changed as
desired (client dump program, compression, etc) and set dumpcycle in the new
dumptype to 0:

  	


	    define mail-spool {
	        comp-user-tar
		dumpcycle 0
	    }
	

	
To run full dumps by hand outside of AMANDA (perhaps they are too large for the
normal tape capacity, or need special processing), create a new dumptype and
set strategy to incronly:

  	
  	    define full-too-big {
  	        comp-user-tar
  	        strategy incronly
  	    }
  	
  	

Tell AMANDA when a full dump of the area has been done with the force suboption
of amadmin. Take care to do full dumps often enough that the tape cycle does
not wrap around and overwrite the last good non-full backups.
To never do full dumps (such as an area easily regenerated from vendor media),
create a new dumptype and set strategy to nofull:

  	
  	    define man-pages {
  	    	comp-user-tar
  		strategy nofull
  	    }
  	
  	

Only level 1 backups of such areas are done, so wrapping around the tape cycle
is not a problem.
To do periodic archival full dumps, create a new AMANDA configuration with its
own set of tapes but the same disklist as the normal configuration (e.g.
symlink them together). Copy amanda.conf, setting all dumpcycle values to 0 and
record to no, e.g. in the global dumptype. If a changer is used, set runtapes
very high so tape capacity is not a planning restriction. Disable the normal
AMANDA run, or set the hold file as described in "Operating AMANDA", so AMANDA
does not try to process the same client from two configurations at the same
time.

Adjust Parallelism

AMANDA starts several dumper processes and keeps as many as possible running at
once. The following options control their activity:


  inparallel
      Total number of dumpers.

  maxdumps
      Maximum dumpers for a single client.

The default maxdumps is one, meaning only one dumper is assigned to a client at
a time. If a client can support the load, increase maxdumps so more than one
dump on that client is running at once. Note that maxdumps is both a general
amanda.conf parameter and a specific dumptype parameter. The value in a
specific dumptype takes precedence.
Field four of the disklist file is a "spindle number". Areas with the same non-
negative spindle number are not backed up at the same time if maxdumps is
greater than one. This prevents thrashing on an individual physical disk. Set
spindle number to -1 (which is the default) for independent areas that can be
done in conjunction with any other area, such as a whole physical disk. If the
tape server has multiple network connections, an amanda.conf interface section
may be set up for each one and clients allocated to a particular interface with
field five of the disklist. Individual interfaces take precedence over the
general netusage bandwidth limit and follow the same guidelines described above
in "Configuring AMANDA": the limit is imposed when deciding whether to start a
dump, but once a dump starts, AMANDA lets underlying network components do any
throttling.
Individual AMANDA interface definitions do not control which physical
connection is used. That is left up to the operating system network software.
While it's common to give an AMANDA interface definition the same name as a
physical connection, e.g. le0, it might be better to use logical names such as
back-door-atm to avoid confusion.
The starttime dumptype parameter delays a backup some amount of time after
AMANDA is started. The value is entered as HHMM, so 230, for instance, would
wait 2.5 hours. This may be used to delay backups of some areas until they are
known to be idle.

Monitor for Possible Improvements

amstatus may be used to get a summary of dumper activity:

  	
  	# su amanda -c "amstatus Daily --file amdump.1 --summary"
  	...
  	 dumper0  busy  :  5:52:01  ( 98.03%)
  	 dumper1  busy  :  0:23:09  (  6.45%)
  	 dumper2  busy  :  0:13:27  (  3.75%)
  	 dumper3  busy  :  0:16:13  (  4.52%)
  	 dumper4  busy  :  0:06:40  (  1.86%)
  	 dumper5  busy  :  0:03:39  (  1.02%)
  	   taper  busy  :  3:54:20  ( 65.26%)
          0 dumpers busy  :  0:03:21  (  0.93%) 	    file-too-large:  0:03:21
  (100.00%)
  	1 dumper  busy  :  4:03:22  ( 67.78%)         no-diskspace:  3:40:55
  (	90.77%)
  	                                            file-too-large:  0:21:13  (	
  8.72%)
  						      no-bandwidth:  0:01:13  (  0.50%)
  	2 dumpers busy  :  0:17:33  (  4.89%)         no-bandwidth:  0:17:33
  (100.00%)
  	3 dumpers busy	:  0:07:42  (  2.14%)         no-bandwidth:  0:07:42
  (100.00%)
  	4 dumpers busy	:  0:02:05  (  0.58%)         no-bandwidth:  0:02:05
  (100.00%)
  	5 dumpers busy	:  0:00:40  (  0.19%)         no-bandwidth:  0:00:40
  (100.00%)
  	6 dumpers busy	:  0:03:33  (  0.99%)             not-idle:  0:01:53
  (	53.10%)
  	                                                no-dumpers:  0:01:40
  ( 46.90%)
  	
  	

This says:

* dumper 0 was busy almost all the time.
* dumper 1 (and above) were not used very much.
* taper was busy about 2/3 of the total run time.
* All dumpers were idle less than 1% of the total runtime.
* One dumper was busy 67.78% of the total run time and the reason two dumpers
  were not started when one was busy was not enough holding disk space (no-
  diskspace) 90.77% of that time, the next image to dump was too large to fit
  in the holding disk at all (file-too-large) 8.72% of that time and network
  bandwidth was exhausted (no-bandwidth) 0.50% of that time

This configuration would benefit from additional holding disk space, which
would allow more dumpers to run at once and probably keep taper busy more of
the time.
Other common status indicators are:


  not-idle
      Everything is running that can be.

  no-dumpers
      All dumpers are busy and there are other dumps that could be started.

  client-constrained
      The maximum number of dumpers for remaining clients are already running,
      or all spindles are already in use.

  start-wait
      All remaining dumps are delayed until a specific time of day.

If the tape server machine has multiple tape drives, more than one AMANDA
configuration may run at the same time. Clients and holding disks should be
assigned to only one configuration, however.
AMANDA waits a fixed amount of time for a client to respond with dump size
estimates. The default is five minutes per area on the client. For instance, if
a client has four areas to back up (entries in disklist), AMANDA waits at most
20 minutes for the estimates. During dumping, AMANDA aborts a dump if the
client stops sending data for 30 minutes. Various conditions, such as slow
clients, which dump program is used and characteristics of the area, may cause
timeouts. The values may be changed with the amanda.conf etimeout parameter for
estimates and dtimeout for data. Positive etimeout values are multiplied by the
number of areas. The absolute value of a negative number is used for the whole
client regardless of the number of areas.

Excluding Files

GNU-tar can exclude items from the dump image based on file name patterns
controlled by the dumptype exclude parameter. A single pattern may be put on
the exclude line itself or multiple patterns may be put in a file on the
client. The dumptype exclude line in that case includes a list keyword and the
path to the file.
Exclusion entries are shell-style wildcard expressions except * matches through
any number of / characters. If a matched item is a directory, it and all its
contents are omitted. For instance:


  ./usr
      Omit the usr directory at the top level of the area and everything under
      it.

  core
      Omit all items named core.

  */core*
      Omit all items starting with core, e.g. core, core19970114, corespondent,
      or corexx/somefile (probably not a good idea).

  */test*.c
      Omit all items starting with test and ending with .c, e.g. test.c,
      testing.c or testdir/pgm/main.c (probably not a good idea).

  *.o
      Omit all items ending with .o.

  */OLD/*
      Omit all items within directories named OLD, including subdirectories and
      their contents, but dump the OLD directory entry itself.


Restoring with AMANDA

Remember that no one cares if you can back up ?only if you can restore.

Configuring and Using amrecover

One way to restore items with AMANDA is with amrecover on the client. Before
amrecover can work, AMANDA must run with the dumptype index parameter set to
yes and the amindexd and amidxtaped services must be installed and enabled to
inetd, usually on the tape server machine (the default build sequence installs
them). Also, add the client to .amandahosts (or .rhosts) for the AMANDA user on
the server machine. Since amrecover must run as root on the client, the entry
must list root as the remote user, not the AMANDA user. amrecover should not be
made setuid-root because it would open up catalogues of the entire system to
everyone.
For this example, user jj has requested two files, both named molecule.dat, in
subdirectories named work/sample-21 and work/sample-22 and said they want the
versions last modified on the 13th of January. Become root on the client, cd to
the area and start amrecover:

  	
  	  $ su
  	  Password:
  	  # cd ~jj
  	  # amrecover Daily
  	  AMRECOVER Version 2.4.1p1.
  	  Contacting server on amanda.cc.purdue.edu ...
  	  220 amanda AMANDA index server (2.4.1p1) ready.
  	  200 Access OK
  	  Setting restore date to	today (1999-01-18)
  	  200 Working date set to 1999-01-18.
  	  200 Config set to Daily.
  	  200 Dump host set to pete.cc.purdue.edu.
  	  $CWD '/home/pete/u66/jj' is on disk '/home/pete/u66' mounted at '/home/
  pete/u66'.
  	  200 Disk set to /home/pete/u66.
  	  amrecover>
  	
  	

At this point, a command line interface allows browsing the image catalogues.
Move around with the cd command, see what is available with ls, change date
with setdate, add files and directories to the extraction list with add and so
on. The extract command starts actual recovery:

  	
  	      amrecover> setdate ---14
  	      200 Working date set to 1999-01-14.
  	      amrecover> cd work/sample-21
  	      /home/pete/u66/jj/work/sample-21
  	      amrecover> add molecule.dat
  	      Added /jj/work/sample-21/molecule.dat
  	      amrecover> cd ../sample-22
  	      /home/pete/u66/jj/work/sample-22
  	      amrecover> add molecule.dat
  	      Added /jj/work/sample-22/molecule.dat
  	      amrecover> extract
  	      Extracting files using tape drive /dev/rmt/0mn on host
  amanda.cc.purdue.edu.
  	      The following tapes are needed: Daily-034

  	      Restoring files into directory /home/pete/u66
  	      Continue? [Y/n]: y

  	      Load tape Daily-034 now
  	      Continue? [Y/n]: y
  	      Warning: ./jj: File exists
  	      Warning: ./work: File exists
  	      Warning: ./work/sample-21: File exists
  	      Warning: ./work/sample-22: File exists
  	      set owner/mode for '.'? [yn] n
  	      amrecover> quit
  	
  	

amrecover finds which tapes contain the images, prompts through mounting them
in the proper order, searches the tape for the image, optionally decompresses
it, brings it across the network to the client and pipes it into the
appropriate restore program with the arguments needed to extract the requested
items. amrecover does not know how to run every client restore program. See the
amrecover manpage for current information. amrecover should not be used to do
full filesystem recovery with vendor restore tools, but does work with GNU-tar.
Vendor tools should be run with the r flag for a full recovery and amrecover is
oriented toward extracting individual items with the x flag. Full filesystem
recovery with vendor restore should be done with amrestore. amrecover (actually
the amidxtaped server) does not know about tape changers, so mount the tapes by
hand or use amtape if a changer is available.

Using amrestore

The amrestore command retrieves whole images from tape. First, find which tapes
have the desired images. The find suboption of amadmin generates output like
this (abbreviated):

  	
  	    # su amanda -c "amadmin Daily find pete u66"
  	    Scanning /amanda...

  	    date       host                 disk    	      lv tape or file   file
  status
  	    ...
  	    1999-01-12 pete.cc.purdue.edu   /home/pete/u66    1  Daily-032        14
  OK
  	    1999-01-13 pete.cc.purdue.edu   /home/pete/u66    1	 Daily-033        26
  OK
  	    1999-01-14 pete.cc.purdue.edu   /home/pete/u66    1  Daily-034        40
  OK
  	    1999-01-15 pete.cc.purdue.edu   /home/pete/u66    1  Daily-000        34
  OK
  	    1999-01-16 pete.cc.purdue.edu   /home/pete/u66    1  Daily-001        31
  OK
  	    1999-01-17 pete.cc.purdue.edu   /home/pete/u66    0  Daily-002        50
  OK
  	    1999-01-18 pete.cc.purdue.edu   /home/pete/u66    1  Daily-003        20
  OK
  	
  	

The Scanning /amanda... message says amadmin looked in the holding disk (/
amanda) for any images left there. It then lists all tapes or files in the
holding disk that contain the requested area.
The info suboption to amadmin shows tapes with the most recent images:

  	
  	    # su amanda -c "amadmin Daily info pete u66"
  	    Current info for pete.cc.purdue.edu /home/pete/u66:
  	    Stats: dump rates (kps), Full:  652.0, 648.0, 631.0
  	                      Incremental:  106.0, 258.0, 235.0
  	            compressed size, Full: -100.0%,-100.0%,-100.0%
  		              Incremental: -100.0%,-100.0%,-100.0%
  	    Dumps: lev datestmp  tape             file   origK   compK secs
  	            0  19990117  Daily-002          50  582239  582272	892
  		    1  19990118  Daily-003          20    3263    3296	 31
  		    2  19981214  Daily-032          21    7039    7072   37
  	
  	

Old information may appear, such as 19981214 (14-Dec-1998) in this example.
While it's true this was the last level 2 dump of this area, it is of little
interest because at least one full and level 1 dump have been done since then.
The compressed size values here may be ignored because this particular
configuration uses hardware compression so no software compression data are
available.
A third way to know what tape has an image is to generate a tape table of
contents with amtoc after each AMANDA run:

  	
  	    #  partition                      	lvl  size[Kb]  method
  	    0  Daily-002                          -         -  19990117
  	    1  boiler.cc.purdue.edu:/usr/local    1        31  normal
  	    2  egbert.cc.purdue.edu:/opt          1       127  normal
  	    3  boiler.cc.purdue.edu:/usr          1        95  normal
  	   ...
  	   50 pete.cc.purdue.edu:/home/pete/u66   0    582239  normal
  	   ...
  	
  	

A printed report similar to the amtoc output may be automatically generated by
amreport for each run with the lbl-templ tapetype parameter in amanda.conf
using the example/3hole.ps template.
The find and info suboptions to amadmin need the AMANDA log files and database.
These are not usually large amounts of information and a copy should be pushed
after each amdump run to an alternate machine that also has the AMANDA tape
server software installed so they are available if the primary tape server
machine dies. Tools like rdist (ftp://usc.edu/pub/rdist/) or rsync (ftp://
samba.anu.edu.au/pub/rsync/) are useful.
If AMANDA was built using --with-db=text (the default), the database is stored
in a set of text files under the directory listed in the infofile amanda.conf
parameter. Here is the file that matches the above info amadmin output:

  	
  	    # cd /usr/local/etc/amanda/Daily/curinfo
  	    # cat pete.cc.purdue.edu/_home_pete_u66/info
  	    version: 0
  	    command: 0
  	    full-rate: 652.000000 648.000000 631.000000
  	    full-comp:
  	    incr-rate: 106.000000 258.000000 235.000000
  	    incr-comp:
  	    stats: 0 582239 582272 892 916549924 50 Daily-002
  	    stats: 1 3263 3296 31 916637269 20 Daily-003
  	    stats: 2 7039 7072 37 913614357 21 Daily-032
  	    //
  	
  	

The first field of each stats line is the dump level. The last field is the VSN
and the field just before it is the tape file number. The field with the large
number just before that is a Unix epoch time value, which may be converted to
text with this Perl script:

  	
  	    $ cat epoch.pl
  	    #!/usr/local/bin/perl
  	    use warnings;
  	    use strict;
  	    require 'ctime.pl';
  	    foreach (@ARGV) {
  	      s/,//;
  	      if (m/[a-fA-FxX]/) {
  	      	unless (m/^0[xX]/) {
  		  $_ = '0x' . $_;
  		}
  		$_ = oct;
  	      }
  	      print &ctime ($_);
  	    }
  	    exit (0);
  	    $ epoch.pl 916549924
  	    Sun Jan 17 0:12:04 US/East-Indiana 1999
  	
  	

Prepositioning the tape to the image with mt fsf may significantly reduce the
time needed to do a restore. Some media contain an index for very fast file
searching compared to the one file at a time scanning done by amrestore. Each
tape location method listed above also shows the tape file. Use that number
with mt fsf after a rewind to position to a particular image.
amrestore takes client, area and date stamp patterns as optional arguments to
search for matching images. Each argument is a grep-style regular expression,
so multiple images may match. This also means an image may need a specific
pattern. For instance:

  	
  	    # amrestore $TAPE pete /
  	
  	

finds not just the root area for the pete client, but images for any client
with pete someplace in the hostname and a slash anywhere in the area name.
Assuming only one client matches pete, the following gets just the root area:

  	
  	    # amrestore $TAPE pete '^/$'
  	
  	

The up arrow (caret) at the beginning says the pattern must start with this
string. The dollar sign at the end says it must end there. The quote marks
around the pattern protect the special characters from shell expansion.
Without flags, amrestore finds every matching image, uncompresses it if needed
and creates a disk file in the current working directory with a name made up of
the client, area and dump level. These images may be used directly by the
client restore program.
amrestore may be used to generate a tape table of contents by giving it a host
pattern that cannot match:

  	
  	    # mt rewind
  	    # amrestore $TAPE no.such.host
  	
  	

As it searches in vain for no.such.host it reports images that are skipped:

  	
  	    amrestore: 0: skipping start of tape: date 19990117 label Daily-002
  	    amrestore: 1: skipping boiler.cc.purdue.edu._.19990117.1
  	    amrestore: 2: skipping egbert.cc.purdue.edu._opt.19990117.1
  	    amrestore: 3: skipping boiler.cc.purdue.edu._.19990117.1
  	    ...
  	
  	

For large images, the p flag writes the first match to standard output, which
may then be piped into the client restore program. This flag is also useful for
moving an image across the network. For instance, here is one way to restore a
file directly from the tape server (amanda.cc.purdue.edu) while logged in to
the client:

  	
  	    # rsh -n amanda.cc.purdue.edu amrestore -p $TAPE pete
  	?'^/$? ' \ | gtar xf - ./the-file
  	
  	

Tell vendor restore programs to use a small blocking factor to handle the
arbitrary size chunks of data available through a pipeline:

  	
  	    # rsh -n amanda.cc.purdue.edu amrestore -p $TAPE pete u66 \ |
  	    ufsrestore -ivbf 2 -
  	
  	


Restoring Without AMANDA

The AMANDA tape format is deliberately simple and restoring data can be done
without any AMANDA tools if necessary. The first tape file is a volume label
with the tape VSN and date it was written. It is not in ANSI VOL1 format, but
is plain text. Each file after that contains one image using 32 KByte blocks.
The first block is an AMANDA header with client, area and options used to
create the image. As with the volume label, the header is not in ANSI format,
but is plain text. The image follows, starting at the next tape block, until
end of file.
To retrieve an image with standard Unix utilities if amrestore is not
available, position the tape to the image, then use dd to read it:

  	
  	    # mt rewind
  	    # mt fsf NN
  	    # dd if=$TAPE bs=32k skip=1 of=dump_image
  	
  	

The skip=1 option tells dd to skip over the AMANDA file header. Without the of=
option, dd writes the image to standard output, which can be piped to the
decompression program, if needed, and then to the client restore program.
Since the image header is text, it may be viewed with:

  	
  	    # mt rewind
  	    # mt fsf NN
  	    # dd if=$TAPE bs=32k count=1
  	
  	

In addition to describing the image, it contains text showing the commands
needed to do a restore. Here's a typical entry for the root filesystem on
pete.cc.purdue.edu. It is a level 1 dump done without compression using the
vendor ufsdump program:

  	
  	
  	      AMANDA: FILE 19981206 pete.cc.purdue.edu / lev 1
  	      comp N program /usr/sbin/ufsdump
  	
  	
  	

To restore, position the tape at start of file and run:

  	
  	    # dd if=$TAPE bs=32k skip=1 | /usr/sbin/ufsrestore -f... -
  	
  	

As with any backup system, test these procedures while in normal production so
the principles and techniques are familiar when disaster strikes.
-------------------------------------------------------------------------------

Prev                           Up                     Next
Part IV. Various Information  Home  Chapter 17. AMANDA FAQ

