=head1 NAME

vos_shadow - Creates a shadow copy of a volume on a different server/partition

=head1 SYNOPSIS

=for html
<div class="synopsis">

B<vos shadow> S<<< [B<-id>] <I<volume name or ID on source>> >>>
    S<<< [B<-fromserver>] <I<machine name on source>> >>>
    S<<< [B<-frompartition>] <I<partition name on source>> >>>
    S<<< [B<-toserver>] <I<machine name on destination>> >>>
    S<<< [B<-topartition>] <I<partition name on destination>> >>>
    S<<< [B<-toname> <I<volume name on destination>>] >>>
    S<<< [B<-toid> <I<volume ID on destination>>] >>>
    [B<-offline>] [B<-readonly>] [B<-live>] [B<-incremental>]
    S<<< [B<-cell> <I<cell name>>] >>>
    [B<-noauth>] [B<-localauth>]
    [B<-verbose>] [B<-encrypt>] [B<-noresolve>]
    S<<< [B<-config> <I<config directory>>] >>>
    [B<-help>]

B<vos sh> S<<< [B<-id>] <I<volume name or ID on source>> >>>
    S<<< [B<-froms>] <I<machine name on source>> >>>
    S<<< [B<-fromp>] <I<partition name on source>> >>>
    S<<< [B<-tos>] <I<machine name on destination>> >>>
    S<<< [B<-top>] <I<partition name on destination>> >>>
    S<<< [B<-ton> <I<volume name on destination>>] >>>
    S<<< [B<-toi> <I<volume ID on destination>>] >>>
    [B<-o>] [B<-r>] [B<-l>] [B<-in>]
    S<<< [B<-c> <I<cell name>>] >>>
    [B<-noa>] [B<-lo>] [B<-v>] [B<-e>] [B<-nor>]
    S<<< [B<-co> <I<config directory>>] >>>
    [B<-h>]

=for html
</div>

=head1 DESCRIPTION

The B<vos shadow> command creates a shadow copy of a volume on a
different partition or server.

A shadow volume is a copy of a volume that does not normally appear in
the volume location database (VLDB). It is a primitive operation that
is meant to be used in backup or disaster recovery situations.

=head1 CAUTIONS

This command is not used during normal OpenAFS administration and may
have adverse effects on the VLDB if not used properly! This command
should only be used by an expert.

Using this command on a volume when the source volume is not the same
as parent volume used to create the shadow will leave the destination
volume in a unknown state.

Running B<vos syncserv> or B<vos syncvldb> on a fileserver containing 
shadow volumes will not update the VLDB with the shadowed Read/Write
volumes as long as the entries for the source volumes still exist. In
a disaster recovery situation the VLDB entries for the corresponding
source volumes need hence to be deleted first.

Currently, the maximum quota for a volume is 2 terabytes (2^41 bytes). Note
that this only affects the volume's quota; a volume may grow much larger if
the volume quota is disabled. However, volumes over 2 terabytes in size may
be impractical to move, and may have their size incorrectly reported by some
tools, such as L<fs_listquota(1)>.

=head1 OPTIONS

=over 4

=item B<-id> <I<volume name or ID>>

Specifies either the complete name or volume ID number of a read/write
volume.

=item B<-fromserver> <I<machine name for source>>

Identifies the file server machine where the source volume resides. Provide
the machine's IP address or its host name (either fully qualified or using
an unambiguous abbreviation). For details, see L<vos(1)>.

=item B<-frompartition> <I<partition name for source>>

Names the partition where the source volume resides. Provide the full
partition name (for, example, B</vicepa>) or one of the abbreviated forms
described in L<vos(1)>.

=item B<-toserver> <I<machine name for destination>>

Identifies the file server machine to which to copy the volume.  Provide
the machine's IP address or its host name (either fully qualified or using
an unambiguous abbreviation). For details, see L<vos(1)>.

=item B<-topartition> <I<partition name for destination>>

Names the partition to which to copy the volume. Provide the full partition
name (for, example, B</vicepa>) or one of the abbreviated forms described in
L<vos(1)>.

=item B<-toname> <I<volume name for new copy>>

The complete name of the new volume to create.

=item B<-toid> <I<volume ID for new copy>>

The volume ID number to use for the new volume.

=item B<-offline>

Leaves the new volume flagged as off-line in the volume database.

=item B<-readonly>

Flags the new volume as read-only in the volume database.

=item B<-live>

Copies the live volume without cloning.  This is normally not necessary and
causes the volume to be kept locked for longer than the normal copy
mechanism.

=item B<-incremental>

Copy the changes from the source volume to a previously created shadow
volume.

=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<vos(1)>.

=item B<-noauth>

Assigns the unprivileged identity C<anonymous> to the issuer. Do not
combine this flag with the B<-localauth> flag. For more details, see
L<vos(1)>.

=item B<-localauth>

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

=item B<-verbose>

Produces on the standard output stream a detailed trace of the command's
execution. If this argument is omitted, only warnings and error messages
appear.

=item B<-encrypt>

Encrypts the command so that the operation's results are not transmitted
across the network in clear text. This option is available in OpenAFS
versions 1.4.11 or later and 1.5.60 or later.

=item B<-noresolve>

Shows all servers as IP addresses instead of the DNS name. This is very
useful when the server address is registered as 127.0.0.1 or when dealing
with multi-homed servers. This option is available in OpenAFS
versions 1.4.8 or later and 1.5.35 or later.

=item B<-config> <I<configuration directory>>

Set the location of the configuration directory to be used. This defaults to
F</usr/vice/etc>, except if B<-localauth> is specified, in which case the
default is F</usr/afs/etc>. This option allows the use of alternative
configuration locations for testing purposes.

=item B<-help>

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

=back

=head1 OUTPUT

This command has no output unless C<-verbose> is specified or there is
an error.

=head1 PRIVILEGE REQUIRED

The issuer must be listed in the F</usr/afs/etc/UserList> file on the
machines specified with the B<-toserver> and B<-fromserver> arguments and
on each database server machine.  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<vos(1)>,
L<vos_backup(1)>,
L<vos_copy(1)>,
L<vos_move(1)>

L<http://www.openafs.org/pipermail/openafs-info/2005-July/018469.html>
discusses motivation for the creation of this command.

L<http://workshop.openafs.org/afsbpw06/talks/drh.scs.html> discusses
one possible use for it.

=head1 COPYRIGHT

Copyright 2008 Jason Edgecombe <jason@rampaginggeek.com>

This documentation is covered by the BSD License as written in the
doc/LICENSE file. This man page was written by Jason Edgecombe for
OpenAFS.
