=head1 NAME

backup_diskrestore - Restores the entire contents of a partition

=head1 SYNOPSIS

=for html
<div class="synopsis">

B<backup diskrestore> S<<< B<-server> <I<machine to restore>> >>>
    S<<< B<-partition> <I<partition to restore>> >>>
    S<<< [B<-portoffset> <I<TC port offset>>+] >>>
    S<<< [B<-newserver> <I<destination machine>>] >>>
    S<<< [B<-newpartition> <I<destination partition>>] >>>
    S<<< [B<-extension> <I<new volume name extension>>] >>>
    [B<-dryrun> | B<-n>] [B<-localauth>] S<<< [B<-cell> <I<cell name>>] >>> [B<-help>]

B<backup di> S<<< B<-s> <I<machine to restore>> >>>
    S<<< B<-pa> <I<partition to restore>> >>>
    S<<< [B<-po> <I<TC port offset>>+] >>>
    S<<< [B<-news> <I<destination machine>>] >>>
    S<<< [B<-newp> <I<destination partition>>] >>>
    S<<< [B<-e> <I<new volume name extension>>] >>> [B<-dryrun> | B<-n>] [B<-l>]
    S<<< [B<-c> <I<cell name>>] >>> [B<-h>]

=for html
</div>

=head1 DESCRIPTION

The B<backup diskrestore> command restores all of the volumes for which
the Volume Location Database (VLDB) lists a read/write site on the
partition specified with the B<-server> and B<-partition> arguments. It is
useful if a disk or machine failure corrupts or destroys the data on an
entire partition. (To restore any read-only or backup volumes that resided
on the partition, use the B<vos release> and B<vos backup> commands,
respectively, after restoring the read/write version.)

If restoring only selected volumes to a single site, it is usually more
efficient to use the B<backup volrestore> command. To restore multiple
volumes to many different sites, use the B<backup volsetrestore> command.

(If the C<FILE YES> instruction appears in the
F</usr/afs/backup/CFG_I<device_name>> file on the Tape Coordinator machine
associated with the specified port offset, then the Backup System restores
data from the backup data file listed for that port offset in the Tape
Coordinator's F</usr/afs/backup/tapeconfig> file, instead of from
tape. For the sake of clarity, the following text refers to tapes only,
but the Backup System handles backup data files in much the same way.)

The Backup System determines whether the read/write or backup version of
each volume was dumped more recently, and restores the dumps of that
version, starting with the most recent full dump. It resets the creation
timestamp of each restored volume to the date and time at which it begins
restoring the volume (the creation timestamp appears in the C<Creation>
field of the output from the B<vos examine> and B<vos listvol> commands).

If all of the full and incremental dumps of all relevant volumes were not
written on compatible tape devices, use the B<-portoffset> argument to
list multiple port offset numbers in the order in which the tapes are
needed (first list the port offset for the full dump, second the port
offset for the level 1 incremental dump, and so on). This implies that the
full dumps of all relevant volumes must have been written to a type of
tape that the first Tape Coordinator can read, the level 1 incremental
dumps to a type of tape the second Tape Coordinator can read, and so
on. If dumps are on multiple incompatible tape types, use the B<backup
volrestore> command to restore individual volumes, or the B<backup
volsetrestore> command after defining groups of volumes that were dumped
to compatible tape types. For further discussion, see the I<OpenAFS
Administration Guide>.

By default, the Backup System restores the contents of the specified
partition to that same partition. To restore the contents to an alternate
site, combine the following options as indicated. The Backup System
removes each volume from the original site, if it still exists, and
records the change of site in the VLDB.

=over 4

=item *

To restore to a different partition on the same file server machine,
provide the B<-newpartition> argument.

=item *

To restore to the partition with the same name on a different file server
machine, provide the B<-newserver> argument.

=item *

To restore to a completely different site, combine the B<-newserver> and
B<-newpartition> arguments.

=back

By default, the Backup System overwrites the contents of existing volumes
with the restored data. To create a new volume to house the restored data
instead, use the B<-extension> argument. The Backup System creates the new
volume at the site designated by the B<-newserver> and B<-newpartition>
arguments if they are used or the B<-server> and B<-partition> arguments
otherwise. It derives the volume name by adding the extension to the
read/write base name listed in the VLDB, and creates a new VLDB entry. The
command does not affect the existing volume in any way. However, if a
volume with the specified extension also already exists, the command
overwrites it.

To print out a list of the tapes containing the needed dumps, without
actually performing the restore operation, include the B<-dryrun> flag
along with the other options to be used on the actual command.

The Tape Coordinator's default response to this command is to access the
first tape it needs by invoking the C<MOUNT> instruction in the local
F<CFG_I<device_name>> file, or by prompting the backup operator to insert
the tape if there is no C<MOUNT> instruction. However, if the C<AUTOQUERY
NO> instruction appears in the F<CFG_I<device_name>> file, or if the
issuer of the B<butc> command included the B<-noautoquery> flag, the Tape
Coordinator instead expects the tape to be in the device already.  If it
is not, or is the wrong tape, the Tape Coordinator invokes the C<MOUNT>
instruction or prompts the operator. It also invokes the C<MOUNT>
instruction or prompts for any additional tapes needed to complete the
restore operation; the backup operator must arrange to provide them.

=head1 CAUTIONS

If issuing this command to recover data after a disk crash or other
damage, be sure not to issue the B<vos syncserv> command first. Doing so
destroys the VLDB record of the volumes that resided on the partition.

=head1 OPTIONS

=over 4

=item B<-server> <I<machine to restore>>

Names the file server machine that the VLDB lists as the site of the
volumes that need to be restored.

=item B<-partition> <I<partition to restore>>

Names the partition that the VLDB lists as the site of the volumes that
need to be restored.

=item B<-portoffset> <I<TC port offset>>+

Specifies one or more port offset numbers (up to a maximum of 128), each
corresponding to a Tape Coordinator to use in the operation. If there is
more than one value, the Backup System uses the first one when restoring
the full dump of each volume, the second one when restoring the level 1
incremental dump of each volume, and so on. It uses the final value in the
list when restoring dumps at the corresponding depth in the dump hierarchy
and at all lower levels.

Provide this argument unless the default value of 0 (zero) is appropriate
for all dumps. If C<0> is just one of the values in the list, provide it
explicitly in the appropriate order.

=item B<-newserver> <I<destination machine>>

Names an alternate file server machine to which to restore the volumes. If
this argument is omitted, the volumes are restored to the file server
machine named by the B<-server> argument.

=item B<-newpartition> <I<destination partition>>

Names an alternate partition to which to restore the data. If this
argument is omitted, the volumes are restored to the partition named by
the B<-partition> argument.

=item B<-extension> <I<new volume name extension>>

Creates a new volume for each volume being restored, to house the restored
data. The Backup System derives the new volume's name by appending the
specified string to the read/write base name listed in the VLDB, and
creates a new VLDB volume entry. The Backup System preserves the contents
of the volumes on the partition, if any still exist. Any string other than
C<.readonly> or C<.backup> is acceptable, but the combination of the base
name and extension cannot exceed 22 characters in length. To use a period
to separate the extension from the name, specify it as the first character
of the string (as in C<.rst>, for example).

=item B<-dryrun> | B<-n>

Displays a list of the tapes necessary to perform the requested restore,
without actually performing the operation.

=item B<-localauth>

Constructs a server ticket using a key from the local
F</usr/afs/etc/KeyFile> file. The B<backup> command interpreter presents
it to the Backup Server, Volume Server and VL Server during mutual
authentication. Do not combine this flag with the B<-cell> argument. For
more details, see L<backup(8)>.

=item B<-cell> <I<cell name>>

Names the cell in which to run the command. Do not combine this argument
with the B<-localauth> flag. For more details, see L<backup(8)>.

=item B<-help>

Prints the online help for this command. All other valid options are
ignored.

=back

=head1 OUTPUT

If a tape error occurs during the restore operation, the Tape Coordinator
displays the following messages:

   Restore operation on volume I<name> failed due to tape error
   Do you want to continue (y/n)?

where I<name> is the name of the volume that was being restored when the
tape error occurred. Enter the value B<y> to continue the operation
without restoring the indicated volume or the value C<n> to terminate the
operation. In the latter case, the operator can then attempt to determine
the cause of the tape error.

If the issuer includes the B<-dryrun> flag with the command, the following
string appears at the head of the list of the tapes necessary to perform
the restore operation:

   Tapes needed:

=head1 EXAMPLES

The following command restores the volumes for which the VLDB lists a
read/write site on the F</vicepd> partition of the machine
C<fs5.example.com>. The Tape Coordinator associated with port offset 3
performs the operation.

   % backup diskrestore -server fs5.example.com   \
                        -partition /vicepd -portoffset 3

The following command restores the volumes for which the VLDB lists a
read/write site on the F</vicepb> partition of the machine C<fs1.example.com>
to a new site: the F</vicepa> partition on the machine C<fs3.example.com>. The
Tape Coordinator associated with port offset 0 performs the
operation. (The command appears here on two lines only for legibility.)

   % backup diskrestore  -server fs1.example.com -partition /vicepb   \
                         -newserver fs3.example.com -newpartition /vicepa

The following command lists the tapes required to restore the volumes for
which the VLDB lists a read/write site on the F</vicepm> partition of the
machine C<fs4.example.com>:

   % backup diskrestore -server fs4.example.com -partition /vicepm -dryrun
   Tapes needed:
   user.sunday1.1
   user.sunday1.2
   user.monday1.1
   user.tuesday1.1
   user.wednesday1.1

=head1 PRIVILEGE REQUIRED

The issuer must be listed in the F</usr/afs/etc/UserList> file on every
machine where the Backup Server or Volume Location (VL) Server is running,
and on every file server machine that houses an affected volume. If the
B<-localauth> flag is included, the issuer must instead be logged on to a
server machine as the local superuser C<root>.

=head1 SEE ALSO

L<butc(5)>,
L<backup(8)>,
L<backup_dump(8)>,
L<backup_volrestore(8)>,
L<backup_volsetrestore(8)>,
L<butc(8)>,
L<vos_backup(1)>,
L<vos_examine(1)>,
L<vos_listvol(1)>,
L<vos_release(1)>

=head1 COPYRIGHT

IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.

This documentation is covered by the IBM Public License Version 1.0.  It was
converted from HTML to POD by software written by Chas Williams and Russ
Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.
