NAME

     makehistory - tools to recover Usenet history database.


SYNOPSIS

     makehistory [ -A oldtmp ] [ -a active ] [ -b ] [ -f filename
     ] [ -i ] [ -n ] [ -o ] [ -r ] [ -s size ] [ -T tmpdir ] [ -u
     [ -v ] ]


DESCRIPTION

     Makehistory rebuilds the history(5) text file and the  asso-
     ciated  dbz(3)  database.  The default name of the text file
     is /news/etc/history; to specify a different name,  use  the
     ``-f'' flag.  Makehistory scans the active(5) file to deter-
     mine which newsgroup directories within the spool directory,
     /news,  should  be scanned.  (If a group is removed, but its
     spool directory still exists, makehistory will  ignore  it.)
     The  program reads each file found and writes a history line
     for it.

     After the text file is written, makehistory will  build  the
     dbz database.


OPTIONS

     -A   If the ``-A'' flag is used then the argument  given  is
          the pathname makehistory can use to store a copy of the
          history file as it's being built. It will  be  appended
          to, so existing data will not be lost (and so should be
          valid history entries).

     -a   If the ``-a'' flag is given then the  argument  is  the
          active  file  to  use  rather  than  the default one of
          /usr/local/news/etc/active.

     -b   If the ``-b''  flag  is  used,  then  makehistory  will
          remove  any  articles that do not have valid Message-ID
          headers in them.

     -f   If the ``-f'' flag is used, then the database files are
          named file.dir and file.pag.  If the ``-f'' flag is not
          used, then a temporary link to the  name  history.n  is
          made   and   the   database   files   are   written  as
          history.n.pag and history.n.dir.

     -o   If the ``-o'' flag is used, then the link is  not  made
          and any existing history files are overwritten.  If the
          old database exists, makehistory will use it to  deter-
          mine the size of the new database.

     -i   To ignore the old database use the ``-i'' flag.   Using
          the ``-o'' flag implies the ``-i'' flag.

     -s   The program will also ignore any old  database  if  the
          ``-s''  flag  is used to specify the approximate number
          of entries in the new database.  Accurately  specifying
          the  size  is  an  optimization that will create a more
          efficient database.  (The size should be the  estimated
          eventual  size  of  the file, typically the size of the
          old file.)  For more information, see the discussion of
          dbzfresh and dbzsize in dbz(3).

     -u   If the ``-u'' flag is given, then  makehistory  assumes
          that  innd  is running.  It will pause the server while
          scanning,  and  then  send  ``addhist''  commands  (see
          ctlinnd(8))  to  the server for any article that is not
          found   in   the    dbz    database.     The    command
          ``makehistory -bu''  is useful after a system crash, to
          delete any mangled articles and bring the article data-
          base back into a more consistent state.

     -v   If the ``-v'' flag is used with the ``-u''  flag,  then
          makehistory  will  put a copy of all added lines on its
          standard output.

     -n   To scan the spool directory without rebuilding the  dbz
          files,  use  the ``-n'' flag.  If used with ``-u'', the
          server will not be paused while scanning.

     -r   To just build the dbz files from an existing text file,
          use the ``-r'' flag.  The ``-i'' or ``-s'' flags can be
          useful if there are no valid dbz files to use.

     -T   Makehistory needs to create a temporary file that  con-
          tains  one  line  for  each article it finds, which can
          become  very  large.   This  file  is  created  in  the
          /var/tmp  directory.   The ``TMPDIR'' environment vari-
          able may be used  to  specify  a  different  directory.
          Alternatively, the ``-T'' flag may be used to specify a
          temporary directory.  In addition, the sort(1) that  is
          invoked  during  the build writes large temporary files
          (often to /var/tmp but see your system  manpages).   If
          the  ``-T''  flag  is used, then the flag and its value
          will be passed to sort.   On  most  systems  this  will
          change  the  temporary  directory  that  sort uses.  if
          used, this flag and its value will be passed on to  the
          sort(1) command that is invoked during the build.


EXAMPLES

     A typical way to use this  program  is  with  the  following
     /bin/sh commands:

          ctlinnd throttle "Rebuilding history file"
          cd /usr/local/news/etc
          if makehistory -n -f history.n ; then
              :

          else
              echo Error creating history file!
              exit 1
          fi
          # The following line can be used to retain expired history
          # It is not necessary for the history file to be sorted.
          # awk 'NF==2 { print; }' <history >>history.n
          # View history file for mistakes.
          if makehistory -r -s `wc -l <history` -f history.n; then
              mv history.n history
              mv history.n.dir history.dir
              mv history.n.pag history.pag
          fi
          ctlinnd go ''


BUGS AND LIMITATIONS

     Makehistory does not handle symbolic  links.   If  the  news
     spool  area is split across multiple partitions, the follow-
     ing commands should probably be run before the  database  is
     regenerated:
          cd /news
          find . -type l -name '[1-9]*' -print | xargs -t rm
     Make sure to run the command on all the  appropriate  parti-
     tions!


HISTORY

     Written by Rich $alz <rsalz@uunet.uu.net> for  InterNetNews.
     This is revision 1.3, dated 1996/11/26.


SEE ALSO

     active(5),  ctlinnd(8),  dbz(3),  filechan(8),   history(5),
     innd(8), newsfeeds(5), makeactive(8), newsrequeue(8).





















Man(1) output converted with man2html