Imported Upstream version 2.4.5p1
[debian/amanda] / docs / howto-wrapper.txt
diff --git a/docs/howto-wrapper.txt b/docs/howto-wrapper.txt
new file mode 100644 (file)
index 0000000..c5eaf8e
--- /dev/null
@@ -0,0 +1,185 @@
+
+Chapter 15. How to use a wrapper
+Prev  Part III. HOWTOs      Next
+
+-------------------------------------------------------------------------------
+
+Chapter 15. How to use a wrapper
+
+
+Bert de Ridder
+
+Original text
+
+Stefan G. Weichinger
+
+XML-conversion; Updates
+AMANDA Core Team
+<sgw@amanda.org>
+
+Note
+
+Refer to http://www.amanda.org/docs/howto-wrapper.html for the current version
+of this document.
+
+Note
+
+The script used in this document is not part of the official AMANDA release.
+The AMANDA core team does not take any responsibility for this script.
+This is a mini-howto explaining how to control other running tasks on a server
+where the AMANDA software is used to backup data.
+Problem : Lots of software is picky about their datafiles being backed up while
+the files are in use. It sometimes is even necessary to know the state of the
+datafiles at the moment of backup so that when restoring you know exactly
+*what* you are restoring. And most of the time there are dependencies between
+the datafiles as well (for instance, the pure datafiles and the controlfiles of
+an Oracle database.)
+The solution is actually quite simple; you just use a custom made backupscript
+instead of the standard tar command. Inside this tar command, you do some
+necessary processing before executing the tar command and - if necessary - do
+some more processing. This way, you can easily stop an Oracle database, tar the
+files, send them to the tape server and restart the Oracle database. This of
+course is just an example, anything you can do in a shell script can be done.
+
+  1. Create the script
+     This is the most important step, this script is the work horse of the
+     solution. I've called it /bin/amandatar. You can call it whatever you want
+     though. It's a Perl script, it may not be very pretty code, but it does
+     the job. In the script, an example is given for the backup of a Lotus
+     Notes Domino server.
+
+       #!/usr/bin/perl
+
+       # Tar wrapper for Amanda's tar.
+       #
+
+       use Getopt::Long qw(:config pass_through);
+
+       # Obtain directory and file information from the command line.
+
+       $result = GetOptions (
+        'directory=s' => \$dir,
+        'file=s' => \$file
+       );
+
+       # Check whether Amanda wants to do some administrative task (eg.
+       indexinfo
+       # or obtain the number of bytes to be backed up)
+       # if file = /dev/null it's an administrative task and most of the time,
+       no extra
+       #   processing is necessary.
+
+       # What you see here is just a log of the backup start time, and \96 more
+       important
+       #   the stopping of the domino server
+
+       if ( $file ne '/dev/null' )
+       {
+         if ( $dir eq '/local/notesdata' )
+         {
+           system "echo 'Start backup notes at ' >> /var/lib/amanda/runtime" ;
+           system "date >> /var/lib/amanda/runtime";
+           system ( "/etc/init.d/domino stop >> /var/lib/amanda/runtime" );
+         }
+       }
+
+       # The command line is being 'reconstructed'. Necessary because the
+       GetOptions
+       #   call above has stripped the file and directory information.
+       # This is what I meant with 'ugly'  code ;-)
+
+       while ( $ARGV[0] ne '' )
+       {
+         $val = $ARGV[0] ;
+         unshift ( @NEWARGV, $val, ) ;
+         shift @ARGV;
+       }
+
+       while ( $NEWARGV[0] ne '' )
+       {
+         $val = $NEWARGV[0] ;
+         unshift ( @ARGV, $val ) ;
+         shift @NEWARGV;
+       }
+
+       if ( $dir ne '' )
+       {
+         unshift ( @ARGV, '--directory', $dir );
+       }
+       if ( $file ne '' )
+       {
+         unshift ( @ARGV, '--file', $file );
+       }
+
+       if ( $file ne '/dev/null' )
+       {
+         system "echo 'Backing up directory ' $dir >> /var/lib/amanda/runtime"
+       ;
+       }
+
+       # And finally make sure tar is called :-)
+       #   (path may differ on your installation)
+       unshift ( @ARGV , "/bin/tar" ) ;
+
+       system ( @ARGV ) ;
+
+       # Postprocessing
+       #
+       # If Notes backup was requested, restart the server.
+       # Log the backup end time.
+       #
+
+       if ( $file ne '/dev/null' )
+       {
+         if ( $dir eq '/local/notesdata' )
+         {
+           system ( "/etc/init.d/domino start >> /var/lib/amanda/runtime" );
+           system "echo 'End backup notes at ' >> /var/lib/amanda/runtime" ;
+           system "date >> /var/lib/amanda/runtime";
+         }
+       }
+
+       exit 0;
+
+       # End script
+
+     On some systems it may be necessary to setuid root the script.
+  2. Rebuild AMANDA so that it uses your newly created script.
+     Download the sources, untar them to a directory. I'm sure there are lots
+     of documents already available on how to do this, so I won't go into too
+     much detail. (Refer to Amanda_Installation_Notes).
+     fast path :
+
+       /usr/local/src # tar -xvzf amanda-source.tar.gz
+       /usr/local/src # cd amanda-version
+       /usr/local/src/amanda-version # ./configure \
+         --with-user=amanda \
+         --prefix=/usr/local \
+         --exec-prefix=/usr \
+         --bindir=/usr/bin \
+         --sbindir=/usr/sbin \
+         --libexecdir=/usr/lib/amanda \
+         --with-configdir=/etc/amanda \
+         --with-group=disk \
+         --with-gnutar=/bin/amandatar \
+         --with-gnutar-listdir=/var/lib/amanda/gnutar-lists \
+         --with-tmpdir=/tmp/amanda \
+         --with-smbclient=/usr/bin/smbclient \
+         --mandir=/usr/local/man
+
+     Here, it may be necessary to adjust some paths to match your installation.
+     This setup works on SuSE Linux (also SLES) and MacOSX although you may
+     have to use another binary tar.
+     As you see, you may also "replace" the smbclient if necessary. I haven't
+     yet tested it though. I'll leave it as an exercise for the reader <g>.
+
+       /usr/local/src/amanda-version # make
+       /usr/local/src/amanda-version # make install
+
+     Now proceed as with a "normal" installation.
+
+-------------------------------------------------------------------------------
+
+Prev                    Up                           Next
+Chapter 14. AFS HOWTO  Home  Part IV. Various Information
+