home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 17
/
CD_ASCQ_17_101194.iso
/
vrac_os2
/
oback209.zip
/
OBACKUP.TXT
< prev
next >
Wrap
Text File
|
1994-08-22
|
69KB
|
1,801 lines
OBACKUP, ORESTORE and OBACKDIR
OS/2 Compressing Backup and Restore utilities
$Revision: 2.9 $
Copyright (c) 1989-1993 by Trumphurst Ltd.
Trumphurst Ltd.
The Willows
St. Martins Moor
Oswestry
Shropshire
SY10 7BH
England
Tel: (+44) 0691-670318
Fax: (+44) 0691-670316
Mail: obackup@trmphrst.demon.co.uk
nikki@trmphrst.demon.co.uk
________________________________________________________________________________
File obackup.doc Page 1
WARNING - This software is supplied without warranty of any kind. No
guarantee of reliable performance can be given. The suppliers
liability for any failure is limited to the cost of the OBACKUP
program. Users should satisfy themselves that the software performs
satisfactorily before relying on it in any way. As an absolute
minimum, perform a full verification of your first few backups using
ORESTORE /V.
Demonstration copies of this software are distributed free of charge via
computer bulletin boards. These demonstration copies will run for a
limited time only. Full versions of the software are available from the
supplier and from distributors. For details of how to obtain a full
version, see below. The primary ftp site for demonstration versions is
ftp.demon.co.uk in directory /pub/trumphurst/obackup.
OBACKUP and ORESTORE were written to provide a means of backing up data
from hard disks to floppies which would run as a protected mode
application under OS/2. In order to save media costs, the programs
compress the data as it is backed up. The algorithm used is dynamic
Lempel-Ziv compression, which normally gives compression ratios of
between 30% and 60%. To increase the speed of backup, the compression
algorithm can be changed to a simple non-repeat packing method, or turned
off altogether, using a command-line switch.
OBACKUP makes full use of OS/2 threads, thus enabling it to read data from
the hard disk, compress previously read data, and write previously
compressed data to floppy at the same time. The read and compression
threads still run while the user is changing floppies.
OBACKDIR produces a listing of all the files in a backup set.
OBACKUP currently only produces backups on disk. I would be interested
in enhancing it to cope with tape drives. If you have a tape drive that is
supported by OS/2, please let me know.
Installation
Simply copy all the files on to a directory on your path. If you decide
to move or rename OBACKUP.EXE, make sure you move or rename OBACKUP.REG
with it. OBACKUP will not run without OBACKUP.REG in the same
sub directory, with the same name as the executable file.
Upgrading from a version of OBACKUP prior to 2.0
Users of earlier versions of OBACKUP should note that the current
version is NOT backward compatible with 1.4. Neither program will
restore backups made with the other. You should therefore make sure you
keep a copy of the old version (under a different name, or in a different
directory) so that you can still restore your old backups.
Please note that the way command line and response file arguments are
processed has changed slightly - all switch arguments must be separate
from file/directory arguments, and they apply only to files processed
after they have been encountered.
________________________________________________________________________________
File obackup.doc Page 2
Obtaining support and licensed copies of OBACKUP
World-wide on-line support for these programs is provided via the Internet.
Queries about and orders for OBACKUP may be sent via Internet mail
to obackup@trmphrst.demon.co.uk.
Trumphurst Ltd.
The Willows
St. Martins Moor
Oswestry
Shropshire
SY10 7BH
England
Tel : 0691-670318. (country code 44)
Fax : 0691-670316
The Australian distributor is
Critical Software Designs
5 Magnolia St.
Daisy Hill
Queensland 4127
Australia
Tel : (07) 208 9224 (country code 61)
Fax/BBS - Ph: (07) 808 8998 (24 hrs) Fidonet: 3:640/208
Prices
U.K. U.S. Australia
Single copy of OBACKUP £50.00 $75.00 $125.00
Minor update £ 5.00 $10.00 $ 12.00
Major update Half the full price in force at the time.
Updates from 1.4 £ 5.00 $ 7.50 $ 8.50
Password decoding £10.00 $15.00
Unlimited site licences and educational bulk discounts available on request.
Bulk discounts for multiple copies serialised with the same name and address :
10-19 copies............ 20% discount
20-49 copies............ 30% discount
30-99 copies............ 40% discount
100 or more copies...... 50% discount
Postage and packing charges
U.K..................... Free
Europe.................. £2.50
U.S..................... $10.00
Australia............... Free
*** residents in EEC member states must add 17.5% VAT to the total bill ***
We accept Visa, Master and American Express cards at the UK address - if
US customers using a credit card to order, you will be charged the U.K.
price, which will save a few dollars. When sending credit card details,
please remember to include the expiry date of your card.
Alternatively, checks are accepted in any of the above currencies. Checks
in other currencies (translated from the U.K. price at the current
sterling exchange rate) should have 10% added to cover currency exchange
commission.
________________________________________________________________________________
File obackup.doc Page 3
Updates
A minor update is where the major version number (to the left of the
decimal point) does not change. For example 2.3 to 2.9. Please note that
your OBACKUP.REG file will work for all OBACKUP versions with the same
major version number. If you have Internet or Compuserve access, you can
just download minor upgrades for free. The charges only apply when I have
to post you a new disk.
A major update is where the major version number (to the left of the
decimal point) changes. For example 2.9 to 3.0.
Discounts
If you already have the demonstration version, you are happy to do
without the laser printed manual (which contains exactly the same text as
OBACKUP.TXT), you have the UUDECODE program, and a Usenet mail address
which will accept uuencoded files, I can e-mail you an OBACKUP.REG file
which will turn your demonstration program into a fully registered
version. There are no post & packing charges for this service (obviously),
and there is an additional 10% discount. If you have a credit card, the
whole operation can be done via email. (I still need your postal address,
as it is encoded into OBACKUP.REG.)
The reasons to back up data
Hardware failure - your hard disk can fail completely at any time !
Software failure - any program might contain a bug (defect) which could
corrupt data used by that program. Restoring a backup may allow you
to recover from such errors without re-keying all your data.
Human error - It is regrettably easy to delete files accidentally, or to
key in incorrect data.
Viruses - viruses and trojan programs may corrupt any data or programs on
your hard disk. While this event is extremely unlikely, the insurance
of sound backups could enable you to recover from the situation
painlessly.
Archival of data - Keeping some of your old backups can enable you to
restore historical data for analysis.
Normal backup procedures
Normal backup procedure is to backup ALL the files on your hard disk at
regular intervals. In between these full backups, you should run an
incremental backup to record files which have changed since the last full
backup. You should keep more than one set of backup disks, so that if a
backup set is corrupted for any reason, you can go to an earlier backup.
Deciding on the interval between backups
You should certainly aim to be able to recover your data in the event of
a hard disk failure without undue expense in re-keying data. Most users
should do an incremental backup at least once every day. Normally, a full
backup is taken whenever the number of disks holding the incremental
backups approaches the number needed to hold a full backup.
________________________________________________________________________________
File obackup.doc Page 4
Deciding how many backup sets to keep
In addition to any requirement for historical data, you should also take
account of any periodic checks and reports run on your data. You should
always aim to be able to restore your data to the state it was in just
after the last periodic check. If your current report shows that your data
is corrupt or incorrect in some way, you will then be able to go back to a
situation in which you know the data is correct.
As an absolute minimum, you should keep 3 backup sets (the Grandfather,
Father, Son system). Many users will require much more than this. For a
typical accounting application, for instance, you should keep 5 daily
incremental backups (one for each working day), 4 or 5 full weekly
backups (one for each week in the accounting period), and 3 full period
backups. If you have a requirement for historical data, you might also
keep 12 or 13 period sets, and 3 or more yearly sets.
How to take a backups
For a full backup of drive C:, from the OS/2 command prompt type ...
OBACKUP /S/R C:\
If you have more than one hard disk (e.g. C: and D:) you might type ...
OBACKUP /S/R C:\ D:\
To take an incremental backup, change the above to ...
OBACKUP /I/S/R C:\
or
OBACKUP /I/S/R C:\ D:\
OBACKUP creates a backup directory (called OBACKUP.DIR), listing all
the files backed up. This file is used by OSHOWDIR when listing
backup set contents. You should delete this file (first copying it
off to floppy using COPY if required) when you start a new backup
set. You can also recreate this file by running OBACKDIR on the
backup set.
OBACKUP also creates a backup log (called OBACKUP.LOG), listing any
errors that occurred during backup, and the final backup statistics.
This can be useful for checking back to see exactly what errors occurred.
Details of each backup are appended to this file, so you should delete
this file as soon as it is no longer required, otherwise it will continue
to grow each time you do a backup.
________________________________________________________________________________
File obackup.doc Page 5
How to restore backups
To check that your backup can be restored correctly, from the OS/2 command
prompt type ...
ORESTORE /V
To restore a complete backup, type ...
ORESTORE /W
ORESTORE also creates a restore log (called ORESTORE.LOG), listing any
errors that occurred during restore. This can be useful for checking back
to see exactly what errors occurred. Details of each restore are appended
to this file, so you should delete this file as soon as it is no longer
required, otherwise it will continue to grow each time you do a restore.
________________________________________________________________________________
File obackup.doc Page 6
OBACKUP in detail
Invoke OBACKUP from the OS/2 command interpreter (or a .CMD file) as
follows ...
OBACKUP [<disk>:] [/Bnnn] [/Fname] [/Oname] [/Wprog] [/Ypass]
[/+-ACDEGHIKLMNPQRSTUVX] <pathnames>
Normally, OBACKUP writes data to drive A:. If you include the
optional disk: parameter (e.g. B:), the data is written to the
specified drive.
SWITCHES - indicate switches by preceeding them with either / or +.
To turn a switch OFF, precede it with '-' instead. Switches must
appear BEFORE the pathname arguments to which they apply.
The E, H, I, S, T, U and X switches may be switched on for some files,
and switched off for others. All the other switches must apply to the
whole backup.
/Bnnn = Use nnn 8k buffers (min 8, max 500, default 120)
This changes the amount of memory OBACKUP uses. If you
find that OS/2 is having to page memory to disk while OBACKUP
is running, you may wish to set this to a smaller number than the
default 120.
/Fname = File name to use instead of OBACKDAT
This changes the file name OBACKUP uses for non-raw
backups. The default file name is OBACKDAT.nnn. The name may be up to
8 characters. If the name is less than 8 characters, it is padded with
underscore (_) characters.
/Oname = Other prompt to use instead of "disk"
If are setting up OBACKUP for use from a batch file, with a
removable device which is not a floppy disk, you can use this switch
to change the "Insert disk <nnn> in drive" prompt to use the correct
name for the media.
/Wprog = Run prog.cmd to format disks if necessary
This option tells OBACKUP to run an OS/2 CMD (batch) file if the
destination disk is not readable. This option is not used if you are
backing up in /Raw mode - Raw mode has its own formatting routine,
which can format the disk and write data to it at the same time.
Note that OBACKUP will still be reading and buffering data, and
writing output to the screen while the format program is running. It
is therefore ESSENTIAL that the CMD file does not require any
input, or produce any output. To assist in this, OBACKUP redirects the
standard output and standard error of the CMD file to the NUL device.
However, the OS/2 HELP facility circumvents this - HELP should be
turned OFF before running OBACKUP with this option.
An example CMD file to format the disk in drive A: is provided in
the OBACKUP distribution - it reads "FORMAT A:/ONCE/V:OBACKUP" - the
/ONCE option prevents FORMAT from prompting you to place the disk in
the drive, and the /V:OBACKUP switch prevents format from prompting
you to enter a volume label.
________________________________________________________________________________
File obackup.doc Page 7
/Ypass = Set password which must be provided to restore
This option password protects the backup. The same password must
be supplied to restore it. The maximum length of password is 8
characters.
Note that, although the password is encrypted in the backup file,
the encryption is not secure against someone who has access to the
source code (or to an inventive hacker with a copy of the OBACKUP
program).
Should you lose your password, registered users may send a backup
disk to Trumphurst Ltd. at the address above, together with a fee of
£10.00 (or $15.00) plus postage, packing and tax. The disk will be
returned together with a note of the password.
/A = Add this data to the end of a previous backup.
Normally, OBACKUP creates a new backup set each time it is
run. Setting this switch causes OBACKUP to add the new data to
the end of another backup set. You should have the last disk from the
backup set ready to put in the drive.
/C = no Checking if backup disk belongs to same backup set
Normally OBACKUP will not write backup data to a disk that
belongs to the current backup set. This prevents you accidentally
over-writing a previous disk by mistake. If you are using
OBACKUP to transfer a file system from one machine to another,
this switch allows you to do it using only one (or two) floppies. If
you use this switch, please be careful not to overwrite the disk
already in the drive by mistake !
/D = Delete existing OBACKUP files on floppy disk first
Normally, OBACKUP assumes the floppy disk to be a blank,
formatted disk. If any existing OBACKUP files are found on the
disk, you will be asked if you wish to delete the old OBACKUP
files. The /D switch automatically deletes such files without asking.
NOTE: Unless OBACKUP is run in /R(aw) mode, OBACKUP never
deletes other files on the floppy disk - if you wish to do this, you
should start another OS/2 session, and delete the files from there.
You need to do this before OBACKUP starts writing to the disk.
/E = include Empty files and sub directories in the backup
/G = Go - do not prompt for first disk
Causes OBACKUP to try to access the first disk immediately
on program startup, without prompting the user.
/H = include Hidden and system files
If this switch is set, OBACKUP includes hidden and system
files (such as IBMBIO.COM and IBMDOS.COM) in the backup process.
OBACKUP never includes files which are currently in use by
another OS/2 process.
________________________________________________________________________________
File obackup.doc Page 8
/I = Incremental backup.
If this switch is set, OBACKUP skips all files which don't
have their archive bit set. OBACKUP normally resets the archive
bit on each file as it is backed up (see /T switch). Other backup
programs, including OS/2 BACKUP and XCOPY also reset this bit. The
archive bit is automatically set by OS/2 whenever a file is altered.
This switch therefore enables you to backup only files which have
changed since your last backup. You can use the OS/2 utility ATTRIB
to find out whether a file has the archive bit set. An A attribute
indicates that a file has been altered since your last backup.
/K = Kill all existing files on the destination disk
During a non-raw backup, OBACKUP normally leaves all
existing files unchanged (other than deleting existing backup files if
specified). This switch causes OBACKUP to delete all existing
files on the disk. USE THIS SWITCH WITH CAUTION - ALL EXISTING FILES
WILL BE ERASED. Please note, in order to prevent accidental deletion
of all files on your hard disk, this switch is disabled if the
destination drive is not a removable disk.
/L = don't Log backup
Normally, OBACKUP logs all backup activity to the file
OBACKUP.DIR, for later viewing with OSHOWDIR. The /L switch
disables this feature.
/M = Monochrome screen - screens are shown in black and white.
/N = do Not compress files
Normally, OBACKUP uses dynamic Lempel-Ziv compression on
large files, to reduce the number of disks taken for a backup.
Including the /N switch speeds up the backup process by disabling
this feature. Files are copied unchanged, except for OBACKUP
control information, which is added to each block of data.
/P = Pack files (non-repeat compression)
Normally, OBACKUP uses dynamic Lempel-Ziv compression on
large files, to reduce the number of disks taken for a backup.
Including the /P switch speeds up the backup process by disabling
this feature. Files are still compressed slightly, using a faster,
non-repeat packing algorithm.
/Q = Quiet - do not print backup statistics on exit.
________________________________________________________________________________
File obackup.doc Page 9
/R = Raw device output
Normally OBACKUP uses floppy disks formatted for use by
OS/2. This means that part of the available space on the disk is used
for OS/2 directories, boot sectors, FAT's etc. Also, if you try to
backup onto an unformatted disk, OBACKUP is unable to write to
that disk. Using the /R switch causes OBACKUP to use the whole
area of the disk for data. If OBACKUP is not able to write to
the disk, it attempts to format it. OBACKUP does not write to
non-removable disks in Raw mode, or to disks with a track size
greater than 32768 bytes.
NOTE: OBACKUP always attempts to use the default format
for the drive. This usually means the highest density format, so you
must use suitable disks.
/S = include files from Sub-directories
This switch causes OBACKUP to search all sub-directories
of the directories specified in <pathnames> for files to back up.
/T = Test mode.
This switch stops OBACKUP from resetting the archive bit
on files as they are backed up (see /I switch).
/U = include files in use by other programs
Normally OBACKUP backs up all the files it can open for
reading, even if some other program may be writing to them at the
time. If another program changes a file while it is actually being
backed up, the backup could contain a partially changed file, which
may cause problems if the file is restored. Including -U (or /-U)
turns this option off, so that such files are not backed up at all.
/V = Verify data written to floppy
Including this switch causes OBACKUP to re-read each block
of data immediately after writing it to the floppy. If any errors are
encountered when the data is re-read, OBACKUP re-write s the
data on the next disk. This switch slows down the backup process
considerably.
/X = eXtended attributes.
By default, OBACKUP saves OS/2 extended attribute data
in the backup. By including /-X, you can turn this facility off.
________________________________________________________________________________
File obackup.doc Page 10
<pathnames> may either be directory names, ambiguous file names (as
used in the DIR command) or full file names. As many pathnames as
will fit on the command line may be included. If the pathname is a
file name, that file is backed up. If the pathname is an ambiguous
file name, all files matching that name are backed up. If the
pathname is a directory name, all files on that directory are backed
up. To specify a pathname containing spaces or the characters /, + or -,
enclose the whole pathname in double quotes ("). To include the double
quote mark itself, precede it with a backslash (\).
If a supplied pathname is an absolute pathname (i.e it starts from
the root directory - e.g. \MYDIR\MYFILE) the full pathname is
recorded in the backup, and ORESTORE will restore the file to
the same place. If the pathname contains a disk drive, the file will
also be restored to the same drive. (Note - ORESTORE has
options to over-ride this if necessary.) If the pathname is relative
to the current directory (e.g. MYDIR\MYFILE), it will be restored
relative to the current directory when ORESTORE is run. It is
therefore suggested that you always specify full pathnames including
drive letters when making backups.
The E, H, I, S, T, U and X switches may be turned on (e.g. with +H) or
off (e.g. -H) at any place in the command line. These switches take
effect for subsequent pathnames (until turned off/on again).
Entering OBACKUP /HELP shows a brief summary of the above information.
Examples
OBACKUP B: *
Back up all files on the current directory to drive B:
OBACKUP /S C:\
Back up all files on all directories on drive C: to drive A:.
OBACKUP /N/V/S \
Back up all files on all directories on the current drive to drive A:.
Do not compress, but verify data written to floppy after each write.
OBACKUP B:/D/H/S/R C:\MYDIR
Back up all files (including hidden and system files) on directory
C:\MYDIR and all its sub directories to drive B:. Use raw device mode,
so that OBACKUP can format the disks as it goes.
OBACKUP +S C:\ -S D:\ D:\MYDIR\*.C
Back up all files on all directories on drive C:, all files on the
root directory on drive D:, and all files with extension .C on directory
D:\MYDIR, to drive A:.
OBACKUP /I/S C:\
Back up all files on drive C: which have changed since the last
backup.
________________________________________________________________________________
File obackup.doc Page 11
Command files
You can create OBACKUP command files for regular partial backups.
An OBACKUP command file consists of an ordinary ASCII file (created
with your favourite editor or word processor in non-document mode). Each
line of the file contains an OBACKUP command. Only the first line
may contain a destination disk letter, or any of the switches D, N, P, R,
T or V. You must not place more than 1 command or pathname per line.
Lines may contain comments, which are started with a semicolon. A comment
may not appear on the same line as a pathname (otherwise it would be
difficult to parse pathnames containing spaces or semicolons).
To use a command file with OBACKUP, type
OBACKUP @filename
where filename is the name of your command file.
Example command file
;Backup to floppy disk A:
A:
/D ;Delete any existing backups
;Backup everything on drive C:
+S ;Subsequent lines should include sub directories
C:\
;Backup root directory only of drive D:
-S ;Subsequent lines should NOT include sub directories
D:\
;Backup MYDIR directory on drive D:
D:\MYDIR
________________________________________________________________________________
File obackup.doc Page 12
Prompts and status information while the program is running
The OBACKUP screen is divided into four areas. The top area (in
reverse video) shows program information, error messages, prompts to the
user, and user responses. The other areas show lists of filenames as they
are processed by each thread. The screen looks like this ...
╔══════════════════════════════════════════════════════════════════════════════╗
║OBACKUP OS/2 backup utility V2.9 Serial: 12345 Copyright(c)1991-93 Nikki Locke║
║OBACKUP disk no 002 - Dated 10/Nov/1993 10:00:00 <error messages here> ║
║<prompts here> <debug no>║
╠═Files═╦═Bytes in══╦═Bytes out═╦══Time═══╦User time╦═Input══╦══Comp══╦═Output═╣
║ 3 ║ 2345 ║ 0 ║ 0:12 ║ 0:04 ║ 70% ║ 80% ║ 50% ║
╠═══════╩═══════════╩════════Writing to output══════╩════════╩════════╩════════╣
║ ║
║ ║
║ ║
║ ║
║C:\OS2INIT.CMD ║
╠═══════════════════════════════Compressing════════════════════════════════════╣
║ ║
║ ║
║ ║
║C:\OS2INIT.CMD <Compression method>║
║C:\CONFIG.SYS <Compression method>║
╠════════════════════════════Reading from input════════════════════════════════╣
║ ║
║ ║
║C:\OS2INIT.CMD ║
║C:\CONFIG.SYS <file errors>║
║C:\FORMATS.TBL <file errors>║
╚══════════════════════════════════════════════════════════════════════════════╝
Files : Number of files processed by the "Reading from input" thread.
Bytes in : Number of bytes read by the "Reading from input" thread.
Bytes out : Number of bytes written by the "Writing to output" thread.
Time : Elapsed time (mins:secs)
User Time : Time spent waiting for disk changes
Input : Percentage efficiency of the "Reading from input" thread.
Comp : Percentage efficiency of the "Compressing" thread.
Output : Percentage efficiency of the "Writing to output" thread.
These percentage efficiencies reach 100% when the thread is waiting for
another thread to finish. They reach 0% when both the other threads are
waiting for the indicated thread.
Debug no : If there is a problem with the program hanging, or not
responding to keyboard input, please make a note of this number and the
version number of the program when reporting the problem to your
supplier.
________________________________________________________________________________
File obackup.doc Page 13
Program return codes
OBACKUP, like all OS/2 programs, returns an "errorlevel" number to
the operating system. The numbers are ...
0 Backup successful
1 One or more Extended Attributes were not backup successfully
2 One or more files were not backup successfully
3 Invalid or out of date OBACKUP.REG file
Prompts
"Insert disk 002 in drive A: and press Return"
Insert a blank floppy disk in the indicated drive, and press Return. If
you are using Raw device mode, OBACKUP will format the disk if
necessary. Otherwise, the disk must be ready formatted. If you wish, you
may format the disk (in another OS/2 session) before pressing Return.
"Insert disk 002 in drive A: and press Return or D to delete old backups"
The disk you have just inserted contains data from a previous backup.
Either replace the disk with another, or press D to delete these old
backups.
"Insert disk 002 in drive A: and press Return or D to delete existing files"
The disk you have just inserted has insufficient free space for the backup
file. Either replace the disk with another, or press D to delete all
existing data from the disk to free up space.
"Insert disk 002 in drive A: and press Return (DISCARD THIS FLOPPY)"
A disk write or verify error (see error message on line 3) occurred while
attempting to write the first block of data onto this disk. Remove the
disk from the drive, discard it, and replace with another disk. No data
will be lost.
"Insert disk 002 in drive A: and press Return (KEEP THIS FLOPPY)"
A disk write or verify error (see error message on line 3) occurred while
attempting to write a block of data onto this disk. Remove the disk from
the drive, including it in the backup set, and insert the next disk. No
data will be lost.
Once OBACKUP has started writing to the disk, a line of dots will appear
on the prompt line, and will disappear gradually as each block of data is
written. This enables you to monitor the process, and be ready to change
the disk as the last dots go.
________________________________________________________________________________
File obackup.doc Page 14
Error messages on line 3
"Active backup disk"
The disk you have placed in the floppy drive already contains data from
this backup.
"Not last disk"
You have specified the /A switch to add data to a previous backup, and
the disk in the drive is not the last disk of a previous backup.
"Obackup 1.4 disk"
You have specified the /A switch to add data to a previous backup, and
the disk in the drive was backed up with an earlier version of OBACKUP.
Version 2.0 is not compatible with earlier versions - you can only append
to old backups using the old program.
"Disk verify error"
An error occurred while verifying that the data read back from the floppy
disk was the same as the data written. This block of data will be re-
written on the next backup disk.
"Disk write error"
An error occurred while writing data to the floppy disk. This block of
data will be re-written on the next backup disk.
"Error opening archive file"
OBACKUP could not create the backup file. This disk will not be used in
the backup.
"Error reading floppy disk"
OBACKUP could not read any data from the floppy disk. This disk will not
be used in the backup.
"Formatting while copying"
OBACKUP (in Raw mode) is formatting the disk while copying data to it.
"Cannot format track"
OBACKUP could not format the floppy disk. This disk will not be used in
the backup.
"Not enough space on disk"
There is not enough free space on the disk. Either open another OS/2
session to delete existing files on the disk (or run CHKDSK if there
aren't any), or use another disk.
"Old backup disk"
The disk currently in the drive contains data from a previous backup. The
disk number and backup date are also displayed on line 3.
________________________________________________________________________________
File obackup.doc Page 15
Compression methods
"Copying"
A section of file has been copied unchanged.
"Packing"
A section of file has been non-repeat packed.
"Compressing"
A section of file has been Lempel-Ziv compressed.
Different sections of the same file may use different compression methods,
depending on which method gives the best compression. The compression
method shown against a file name is the one used on the latest block of
data from the file.
"Empty file"
"Empty dir"
Indicates an empty file or directory being backed up with the /E switch.
File errors
"File in use"
Indicates that another process may be writing to the file. The file is
still backed up, but the date may not be sensible if the other process
changes the file while OBACKUP is reading it.
"Cannot open"
OBACKUP can not open the file for reading, probably because another OS/2
process is using the file. The file is not included in the backup set.
"Empty file"
The file contains no data. Such empty files are only backed up if the /E
switch is specified.
"Cannot read EAs"
OBACKUP could not read the Extended Attributes for the file. No
Extended Attribute information is backed up for this file.
"Read error"
An error occurred while OBACKUP was reading the file. Only data read
before the error is backed up.
"Directory depth too great - ignoring sub directories"
OBACKUP can only handle pathnames of a limited length. The directory which
is about to be backed up has a path name which would cause this length to
be exceeded. The only way to backup files from this directory is to make
it (or its parent) the current directory, and backup from there.
________________________________________________________________________________
File obackup.doc Page 16
Fatal errors
Any of the following errors causes OBACKUP to terminate immediately.
"Cannot handle media this size"
OBACKUP cannot handle disks with a track size of greater than 32768 bytes
in Raw mode. Do not use the /R switch when backing up to this drive.
"Non-removable media"
OBACKUP will not write to fixed disks in Raw mode. Do not use the /R
switch when backing up to this drive.
"Error opening command file"
A command file was specified using @<filename>. The file could not be
opened. Check the file name is correct.
"Invalid Bytes Per Sector"
OBACKUP can only cope with disks of 128, 256, 512 or 1024 bytes per
sector in raw mode. Do not use the /R switch when backing up to this
drive.
Internal errors
"Can't determine drive type" ***
"Can't read BPB" ***
"Can't set BPB" ***
"Creating archive bit setting thread" ***
"Creating compress thread" ***
"Creating timer thread" ***
"Creating write thread" ***
"DosQueryFileInfo error" ***
"Error allocating Extended Attribute buffer" ***
"Error allocating queue" ***
"Error allocating second Extended Attribute buffer" ***
"Error allocating verify buffer" ***
"Error allocating write buffer" ***
"Error reading invalid queue" ***
"Error writing buffer queue" ***
"Error writing completed queue" ***
"Error writing compress queue" ***
"Error writing floppy queue" ***
"Error writing invalid queue" ***
"Error writing unknown queue" ***
"Invalid bpb" ***
"Too many queues" ***
Errors marked *** are internal OBACKUP errors. All internal
errors which cannot be explained by either another OS/2 process
accessing a file, by a bad sector on the floppy disk, or by another
hardware failure, should be reported to your supplier, as they
indicate a probable program bug. If you report an internal error,
please note down the program version number, and the debug number
(from line 4).
________________________________________________________________________________
File obackup.doc Page 17
ORESTORE in detail
ORESTORE is invoked from the OS/2 command interpreter (or a .CMD file) as
follows ...
ORESTORE [<disk>:] [/Fname] [/Oname] [/Ypass]
[/+-ACDGIMQRSTVWX] [<files to restore>]
Normally, ORESTORE reads data from drive A:. Including the optional
disk: parameter (e.g. B:) causes the data to be read from the
specified drive.
/Fname = File name to use instead of OBACKDAT
This changes the file name ORESTORE expects for non-raw
backups. The default file name is OBACKDAT.nnn. The name may be up to
8 characters. If the name is less than 8 characters, it is padded with
underscore (_) characters.
/Oname = Other prompt to use instead of "disk"
If are setting up ORESTORE for use from a batch file, with a
removable device which is not a floppy disk, you can use this switch
to change the "Insert disk <nnn> in drive" prompt to use the correct
name for the media.
/Ypass = Password to restore protected backup
This option enables you to restore password protected backups.
The same password must be supplied as was used to back up. The
maximum length of password is 8 characters.
Note that, although the password is encrypted in the backup file,
the encryption is not secure against someone who has access to the
source code (or to an inventive hacker with a copy of the OBACKUP
program).
Should you lose your password, registered users may send a backup
disk to Trumphurst Ltd. at the address above, together with a fee of
£10.00 (or $15.00) plus postage, packing and tax. The disk will be
returned together with a note of the password.
/A = restore All files to sub directories of current directory
If the backed up file name contains a disk drive letter, and/or
it is an absolute path name (starting from root - e.g. \MYDIR\MYFILE)
the /A switch overrides this, and restores the files to paths
relative to the current disk and directory. In the example, if the
current directory was C:\TOPDIR, the file would be restored as C:
\TOPDIR\MYDIR\MYFILE.
/C = restore all files to Current directory
The /C switch removes all drive letters and path details from the
file name before restoring it. This means that all the files from the
backup are restored to the current directory. If there are two files
with the same name (backed up from different directories), the second
file is not restored (subject to /Q and /W switches).
________________________________________________________________________________
File obackup.doc Page 18
/D = Don't test disks to see if OBACKUP /R(aw) was used
Normally ORESTORE tests each disk to see whether it was written
by OBACKUP in /R(aw) mode. This switch disables this test. You need to
use it if the backup was to a non-removable device, or one where the
track size is greater than 32768 bytes.
/G = Go - do not prompt for first disk
Causes ORESTORE to try to access the first disk immediately
on program startup, without prompting the user.
/I = Interactive mode - query each file before restoring/verifying
Normally ORESTORE restores or verifies all the files in a
backup set. The /I switch causes ORESTORE to ask you whether to
backup, verify or ignore each file in turn. Note that this switch also
takes other behaviour into account, so existing files will be ignored
without prompting unless the /W or /Q switches are also on.
/M = Monochrome screen - screens are shown in black and white.
/Q = Query mode - ask before overwriting existing files
Normally ORESTORE does not overwrite existing files. The /Q switch
causes ORESTORE to ask you whether to overwrite any existing file
each time one is found.
/T = set file Times to time restored
Normally ORESTORE sets each restored file's time and date to its
original time and date before it was backed up. This switch turns off
this feature.
/R = assume Raw mode was used for backup
Normally ORESTORE tests each disk to see whether it was written
by OBACKUP in /R(aw) or non raw mode. This switch saves the time
taken by this test.
/S = Silent - do not print restore error statistics on exit.
/V = Verify backup without restoring files
This switch enables you to check that every file in the backup
set is restorable.
/W = overWrite existing files without asking
Normally ORESTORE does not overwrite existing files. The /W switch
causes ORESTORE to overwrite existing files without asking.
/X = Ignore eXtended attributes.
This switch prevents ORESTORE from updating or checking the
Extended Attributes of the files being restored.
________________________________________________________________________________
File obackup.doc Page 19
<files to restore>
If you enter one or more file names or path names, only files
satisfying at least one of the names are restored. If you enter only a
file name (without disk letter or directory specifiers), all files on all
directories which match the name are restored. If you enter a path
name (with disk letter or directory specifier), only files fully matching
the path name are restored. File and path names may be ambiguous.
Name matching follows OS/2 conventions, rather than DOS ones - to restore
all files, use "*", not "*.*".
Entering ORESTORE /HELP shows a brief summary of the above information.
Examples
ORESTORE B:
Restores files from drive B:
ORESTORE /V/I
Asks you whether to verify each individual file in the backup set.
ORESTORE /W *.C \INCLUDE\*
Restores all files with extension .C in all directories, and all
files on the \INCLUDE directory, overwriting any existing files with the
same names.
To use a command file with ORESTORE, type
ORESTORE @filename
where filename is the name of your command file.
Example command file
;Restore from floppy disk A:
A:
;Restore only files beginning with G
G*
________________________________________________________________________________
File obackup.doc Page 20
Prompts and status information while the program is running
The ORESTORE screen is divided into two areas. The top area (in reverse
video) shows program information, error messages, prompts to the user,
and user responses. The other area shows the names of files as they are
restored. The screen looks like this ...
╔══════════════════════════════════════════════════════════════════════════════╗
║ORESTORE OS/2 restore utility V2.9 Copyright(c)1991-93 Nikki Locke ║
║OBACKUP disk no 002 - Dated 10/Nov/1993 10:00:00 <error messages here> ║
║<prompts here> <debug no>║
╠═Disks══╦══Files══╦═Bytes in══╦═Bytes out═╦═══Block═══╦════CRC════╦══Verify═══╣
║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║
╠════════╩═════════╩═══════════╩═File names╩═══════════╩═══════════╩═══════════╣
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║(D:\MYDIR\) MYFILE <file errors>║
║MYFILE.DAT <file errors>║
╚══════════════════════════════════════════════════════════════════════════════╝
Disks : Number of disks processed so far
Files : Number of files restored/verified
Bytes in : Number of bytes read from floppy disk
Bytes out : Number of bytes written/verified to hard disk
Block : Number of block errors
CRC : Number of file CRC errors
Verify : Number of file verify/open errors
Debug no : If there is a problem with the program hanging, or not
responding to keyboard input, please make a note of this number and the
version number of the program when reporting the problem to your
supplier.
________________________________________________________________________________
File obackup.doc Page 21
Program return codes
ORESTIRE, like all OS/2 programs, returns an "errorlevel" number to
the operating system. The numbers are ...
0 Restore successful
1 One or more Extended Attributes were not restored successfully
2 One or more files were not restored successfully
3 User requested a program abort after a read or CRC error
Prompts
"Insert disk 002 in drive A: and press Return "
Place the next disk in the backup set in the floppy drive, and press
Return.
"Insert disk 002 in drive A: and press Return or R to restart from this disk"
The disk in the drive is not the next disk in the backup sequence. Either
place the correct disk in the drive, and press Return, or press R to
continue restoring data from the first file found on this disk. If you
press R, any file which has been partially restored from the previous
disk is not restored correctly.
"Obackup 1.4 disk - insert new disk and press Return"
The disk in the drive is from a backup made with a version of OBACKUP
prior to 2.0. To restore data from this backup, you must use ORESTORE
version 1.4.
"Verify this file (y/n)"
"Verify this directory exists (y/n)"
When the /I and /V switches are in use, this prompt is shown for each
file found in the backup set. Press Y to verify this file, or N to skip
to the next file in the set.
"Restore this file (y, n or v to verify only)"
"Restore this directory (y, n or v to verify only)"
When the /I switch is in use, this prompt is shown for each file found in
the backup set. Press Y to restore this file, V to verify this file is
the same on the hard disk is it is in the backup, or N to skip to the
next file in the set.
"File exists - overwrite (y/n)"
When the /Q switch is in use, this prompt is shown for each file in the
backup set which already exists on the hard disk. Press Y to overwrite
the existing file with the backup copy, or N to skip to the next file in
the set.
________________________________________________________________________________
File obackup.doc Page 22
Error messages on line 4
"Decompression error - Abort, Skip to next file, Next floppy" ***
An unexpected error has occurred while trying to decompress a block of
data. Press A to abort the program, S to restart from the next file in the
backup set, or N to restart from the first file on the next floppy. The
current file is not restored correctly.
"Floppy CRC error - Abort, Retry, Ignore, Skip file, Next floppy" ***
The CRC check on the validity of a data block read from the floppy has
failed. Press A to abort the program, R to re-read the data, I to ignore
the error (this may give rise to further errors later), S to restart from
the next file in the backup set, or N to restart from the first file on
the next floppy. If you press S or N, the current file is not restored
correctly.
"Floppy read error - Abort, Retry, Skip file, Next floppy"
A read error occurred while trying to read a data block from the floppy
has failed. Press A to abort the program, R to re-read the data, S to
restart from the next file in the backup set, or N to restart from the
first file on the next floppy. If you press S or N, the current file will
not have been restored correctly.
"Invalid data block - Abort, Skip to next file, Next floppy" ***
A data block contained an invalid header. Press A to abort the program, S
to restart from the next file in the backup set, or N to restart from the
first file on the next floppy. The current file is not restored correctly.
"Invalid data CRC - Abort, Ignore, Skip to next file, Next floppy" ***
The CRC check on the validity of a data block has failed. Press A to
abort the program, I to ignore the error (this may give rise to further
errors later), S to restart from the next file in the backup set, or N to
restart from the first file on the next floppy. If you press S or N, the
current file is not restored correctly.
Error messages on line 3
"Not an OBACKUP disk"
The disk in the drive was not written by OBACKUP.
"Obackup 1.4 disk"
The disk in the drive was backed up with an earlier version of OBACKUP.
Version 2.0 is not compatible with earlier versions - you can only restore
to old backups using the old program.
"Error opening archive file"
ORESTORE could not open the archive file. Probably the drive is in use by
another OS/2 process.
"Disk out of sequence"
The disk in the drive is not the next disk in sequence.
"Wrong OBACKUP set"
The disk in the drive is from a different OBACKUP set.
________________________________________________________________________________
File obackup.doc Page 23
File errors and messages
"Verified OK"
The file on the hard disk is the same as the one in the backup.
"Restored OK"
The file was restored correctly.
"Skipped"
The file is not being restored, either because it does not match the file
name list provided when ORESTORE was invoked, or because you asked to
skip it in interactive mode.
"EA write error"
An error occurred when trying to update the Extended Attributes of the file.
The file on the hard disk was deleted.
"Write error"
A write error occurred when trying to write data to the file. The file on
the hard disk was deleted.
"Verify error"
The file on the hard disk does not match the file in the backup set.
"EA Verify err"
The Extended Attributes of file on the hard disk do not match those of the
file in the backup set.
"Read EA error"
"Read error"
A read error occurred when trying to verify the file.
"CRC error"
The stored CRC of the backed up file did not match the CRC calculated from
the data written to the file. This usually means that part of the data was
skipped due to an earlier error. The file is not deleted, but probably
contains incorrect data.
"Not created"
ORESTORE was unable to create the file. The file is probably in use by
another OS/2 process.
"Disk full"
There is insufficient space on the disk to restore the file. This file is
not restored.
"File exists"
The file already exists on the hard disk and the /W switch is not in
operation.
"Invalid path"
ORESTORE was unable to create the directories necessary to restore the
file. Perhaps one of the directory names in the path is already in use as
a file.
________________________________________________________________________________
File obackup.doc Page 24
"Not found"
ORESTORE tried to open the file on the hard disk for verification, and
the file could not be opened.
Fatal errors
Any of the following errors will cause ORESTORE to terminate immediately.
"Decompression error - Aborted"
"Floppy disk read - Aborted"
"Invalid data block - Aborted"
The stated error occurred, and Abort was selected at the error prompt.
"Too many arguments"
ORESTORE can only accept up to 31 <files to restore> arguments.
Internal errors
"Can't read BPB" ***
"Error allocating Extended Attribute buffer" ***
"Error allocating second Extended Attribute buffer" ***
"Error allocating verify buffer" ***
"Error allocating decompress buffer" ***
"Error allocating write buffer ***"
"Error allocating read buffer" ***
These are internal ORESTORE errors.
Errors marked *** which cannot be explained by either another OS/2
process accessing a file, by a bad sector on the floppy disk, or by
another hardware failure, should be reported to your supplier, as
they indicate a probable program bug.
________________________________________________________________________________
File obackup.doc Page 25
OSHOWDIR in detail
OSHOWDIR allows you to review backup logs created with OBACKUP and
OBACKDIR. It is intended to upgrade it to become the user interface to
ORESTORE, so you can pick which files to restore. Please feel free to
comment on the user interface.
When OSHOWDIR is invoked, it reads in the OBACKUP.DIR file, and displays
the first screen full of files, which looks like this ...
Disk Date Time Size Name ═╗
║ 15/Aug/1989 14:04:04 New Backup ║
║001 15/Aug/1989 14:04:04 12345 OBACKUP.TST ║
║001 15/Aug/1989 14:04:04 2486 TESTFILE.001 ║
║001 15/Aug/1989 14:04:04 1234 TESTFILE.002 ║
║001 15/Aug/1989 14:04:04 56342 TESTFILE.003 ║
║002 15/Aug/1989 14:04:04 12345 TESTFILE.004 ║
║ ║
║ ..... etc ..... ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
1HELP 2Dir->3<-Dir4FIND 5Find->6<-Find7Disk->8<-Disk9Set->10<-Set11 12
Use cursor Up, Down, PgUp, PgDn, Home, End, to move about the list.
________________________________________________________________________________
File obackup.doc Page 26
The function keys are used as follows
F1 Help
F2 Moves to start of next sub-directory
F3 Moves to start of previous sub-directory
F4 or F Finds (part of) a filename. You will be prompted for a string to
search for. Enter the string (or Esc to abandon). When you have
entered the string, the cursor will move to the next filename
containing that string.
F5 or N Finds the Next occurrence of a file name containing the string
F6 or P Finds the Previous occurrence of a file name containing the string
F7 Moves to start of next backup disk
F8 Moves to start of previous backup disk
F9 Moves to start of next backup set
F10 Moves to start of previous backup set
OBACKDIR in detail
OBACKDIR extracts a list of all files found in a backup set. The list is
written to the standard output, so may be redirected to a file (OBACKDIR
>filename). OBACKDIR also adds the list to OBACKUP.DIR for later
viewing with OSHOWDIR.
The only switches available for OBACKDIR are ...
/D = Don't test disks to see if OBACKUP /R(aw) was used
Normally OBACKDIR tests each disk to see whether it was
written by OBACKUP in /R(aw) mode. This switch disables this
test. You need to use it if the backup was to a non-removable device,
or one where the track size is greater than 32768 bytes.
/L = Don't Log backup
Normally, OBACKDIR adds the directories of all disks to
the file to OBACKUP.DIR, for later viewing with OSHOWDIR. The
/L switch disables this feature.
Version history
2.9 Improved error detection and recovery for /W switch
Detect write-protected disks, and report them as such
2.8 Added /Wformatprogram to run cmd file if disk not readable
Fixed problem where attribute bit was not always reset correctly
2.7 Fixed problem with expiry date code in OBACKUP
OBACKUP no longer uses all available space on large drives
Usage messages now sent to stdout, so it can be redirected or piped
2.6 /F option didn't detect old backups with the same name
/K option added
/Ypass option added
New return code (3) added to ORESTORE if CRC or Read error, or
incorrect password.
2.5 Added /O, /F and /G options.
Improved recognition of non-raw backups in ORESTORE
Added explanation of /S and /Q switches to help text
________________________________________________________________________________
File obackup.doc Page 27
2.4 Corrected pattern matching in ORESTORE.
Turned off cursor while OBACKUP & ORESTORE running
Added /Q switch to OBACKUP and /S to ORESTORE
Allowed command files in ORESTORE.
Changed layout of error messages ready for language translation.
Added OS/2 error codes to more error messages in log files.
Fixed bug where ORESTORE /V did not give an error if file on disk
was longer than the backup (but otherwise identical).
Fixed bug where program tried to backup directory EA's.
Fixed bug where EA data sometimes didn't verify correctly, even if
it was actually correct.
Fixed bug with large command files.
Left 4096 bytes unallocated on initial creation of OBACKDAT files
to prevent disk full errors when writing to fixed disks.
2.3 Fixed bug where ORESTORE failed to recognise 2nd and subsequent
disks properly in non-raw backups.
Fixed bug where ORESTORE didn't always close the archive file.
2.2 Fixed bug where OBACKUP failed to recognise disks when appending
Fixed bug where OBACKDIR failed to recognise non-raw disks
Fixed bug where OBACKUP marked appended archives incorrectly
Fixed bug where times were shown incorrectly
2.1 Fixed minor time expiry problem with demonstration version.
2.0 Introduced support for HPFS long file names and Extended Attributes.
Fixed bug where ORESTORE sometimes failed to recognise backup disks.
Improved compression - 16-bit compression is now used instead of 12.
Added backup and restore error log files.
1.4 Fixed bug where ORESTORE failed to detect that a file existed, so
default mode and /Q mode didn't work correctly.
1.3 Documentation changed to booklet form.
RCS Revision numbers included.
1.25 Released first full version, with owner name stamping.
1.24 Changed expiry date on OBACKUP
1.23 OSHOWDIR enhanced to allow more than 32k of backup directory
Fixed other minor bugs in OSHOWDIR
Disabled checking for non-raw backup disks if backing up in raw mode.
(This occasionally used to hang OS/2 !)
1.20 Added backup log and /L option to disable it.
Added new program OSHOWDIR to view backup logs.
Split distribution into two archives for easier download.
1.07 Changed /I mode not to prompt if file wouldn't be restored because
it already exists.
Changed expiry date on OBACKUP
1.06 Fixed bug in OBACKUP which left the drive locked when changing disks
Fixed bug in ORESTORE which wouldn't recognise some disks
Added debug code number on OBACKUP screen to help trace faults
________________________________________________________________________________
File obackup.doc Page 28
1.04 Fixed bug that prevented ORESTORE from reading some raw backup disks
Added dots to show progress as OBACKUP writes disks
Added /C switch to OBACKUP to allow re-use of disks from same set
Fixed bug that stopped OBACKUP reading old non-raw backup disks
Made any invalid key pop OBACKUP into the background (not just Q)
Added /E switch to OBACKUP to back up empty files and directories
Added /T switch to ORESTORE to set all files to restore date & time
1.03 Introduced ability to add to an existing backup
Introduced ability to pop up over other sessions when changing disks
Added OBACKDIR program.
1.02 ORESTORE would only restore raw device backups (fixed).
Improved speed of skipping files in /I mode.
Added "Out of space" error.
Added overwrite protection, /W and /Q switches to ORESTORE.
Added <files to restore>
Added /A and /C switches to ORESTORE.
Restored files now have same date and time as original files
before backup.
1.01 Fixed bug which always caused verify to fail.
Included Copyright message in OBACKUP.
Added support for raw device output (/R option).
1.00 First release.
Other programs available from Trumphurst
REDIRECT DOS printer and device redirection. Capture printer or
device (including stderr) output to disk. CUA compliant,
mouse-driven, friendly user interface. DOS only.
PAGE User-configurable ASCII document formatter. As well as
tidying up program listings and long documents, this
program will also enable you to save paper by printing in
reduced size fonts, with multiple pages on each sheet of
paper. It will also print documents in booklet form -
this manual was produced using PAGE. Available for DOS,
OS/2 and UNIX.
ZED The programmers editor, as bundled with the original
Zortech C compiler. This updated version includes full C
source code. It is available for DOS, OS/2 and UNIX.
C++tmUIT Text mode user interface toolkit library for C++.
Provides an easy-to-program, CUA compliant, user interface
for C++ programmers. Works in DOS text mode. Full source
code supplied. UNIX version in the pipeline.
UnixMenu Simple front end menu system to hide UNIX from end users.
Comes with full C source and/or an SCO UNIX executable.
________________________________________________________________________________
File obackup.doc Page 29
DosAudit Tracing/debugging program for DOS executables. DosAudit
is a TSR which logs all file OPEN, CREATE, CLOSE, READ,
WRITE, EXECUTE DELETE and RENAME calls in a running
program. This log can be viewed, and turned on or off, in
a pop-up window, and comments can be added to the log
while the audited program is running. A post-processor can
selectively place events from the log file from straight
text into a comma- delimited file for importing into most
spreadsheets and databases for subsequent processing.
Cppnews A DOS text mode Usenet news/mail off-line reader. Ideal
for users connected to the Internet via modem - cut
down on on-line charges by reading messages and composing
replies off-line. Works with UUPC or KA9Q as the actual
transfer agent.
________________________________________________________________________________
File obackup.doc Page 30