makehistory - tools to recover Usenet history database.

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


     Makehistory rebuilds the history(5)  text file and the  associated  dbz(3)
     database.   The  default  name of the text file is <config$_PATH_HISTORY>
     (typically /var/news/etc/history); to specify a different name,  use  the
     ``-f''  flag.   Makehistory  scans  the active(5)  file to determine which
     newsgroup directories within the  spool  directory,  <config$_PATH_SPOOL>
     (typically  /var/news/spool/articles,) 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.


     -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 <config$_PATH_ACTIVE> (typically

     -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 determine 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 database 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 contains one  line
          for  each  article it finds, which can become very large.  This file
          is created in the <config$_PATH_TMP> (typically /var/tmp) directory.
          The  ``TMPDIR''  environment  variable  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.


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

          ctlinnd throttle "Rebuilding history file"
          cd /var/news/etc
          if makehistory -n -f history.n ; then
              echo Error creating history file!
              exit 1
          # 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
          ctlinnd go ''


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

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

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

You can find a summary and links related to this topic
as part of the Mib Software Usenet RKT.