OBACKUP, ORESTORE and OBACKDIR OS/2 Compressing Backup and Restore utilities $Revision: 2.2 $ 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. 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 First update œ 5.00 $10.00 $ 12.00 Subsequent updates Half the full price in force at the time. Updates from 1.4 œ 5.00 $ 7.50 $ 8.50 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 and Master 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. 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 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. 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. ________________________________________________________________________________ File obackup.doc Page 4 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. 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 5 OBACKUP in detail Invoke OBACKUP from the OS/2 command interpreter (or a .CMD file) as follows ... OBACKUP [:] [/Bnnn] [/+ACDEHILMNPRSTV] [/+-EHISTUX] 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. /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. ________________________________________________________________________________ File obackup.doc Page 6 /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. /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. /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. /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 for files to back up. ________________________________________________________________________________ File obackup.doc Page 7 /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. 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. ________________________________________________________________________________ File obackup.doc Page 8 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. 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. ________________________________________________________________________________ File obackup.doc Page 9 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 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.2 Serial: 12345 Copyright(c)1991-93 Nikki Lockeº ºOBACKUP disk no 002 - Dated 10/Nov/1993 10:00:00 º º º ÌÍ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 º ºC:\CONFIG.SYS º ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍReading from inputÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ º º º º ºC:\OS2INIT.CMD º ºC:\CONFIG.SYS º ºC:\FORMATS.TBL º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 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. ________________________________________________________________________________ File obackup.doc Page 10 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. 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 (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 11 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 12 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 13 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 @. 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 14 ORESTORE in detail ORESTORE is invoked from the OS/2 command interpreter (or a .CMD file) as follows ... ORESTORE [:] [/ACDIMQRTVWX] [] 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. /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). /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. /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. ________________________________________________________________________________ File obackup.doc Page 15 /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. 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. 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. ________________________________________________________________________________ File obackup.doc Page 16 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.2 Copyright(c)1991-93 Nikki Locke º ºOBACKUP disk no 002 - Dated 10/Nov/1993 10:00:00 º º º ÌÍDisksÍÍËÍÍFilesÍÍËÍBytes inÍÍËÍBytes outÍËÍÍÍBlockÍÍÍËÍÍÍÍCRCÍÍÍÍËÍÍVerifyÍÍ͹ º 0 º 0 º 0 º 0 º 0 º 0 º 0 º ÌÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÊÍFile namesÊÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍ͹ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º(D:\MYDIR\) MYFILE º ºMYFILE.DAT º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 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 17 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. 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. ________________________________________________________________________________ File obackup.doc Page 18 "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 19 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 20 "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 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 21 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 22 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.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 continuation 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. ________________________________________________________________________________ File obackup.doc Page 23 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 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 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. ________________________________________________________________________________ File obackup.doc Page 24 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. 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. ________________________________________________________________________________ File obackup.doc Page 25