Using DUMPER-32 DUMPER-32 is a VAX/VMS utility for reading the following types of backup tapes: o Tapes written by the TOPS-20 DUMPER utility in native DUMPER format. o Tapes written by the TOPS-10 BACKUP utility in native BACKUP format. o Tapes written by either TOPS-10 BACKUP or TOPS-20 DUMPER in BACKUP INTERCHANGE format. This is a format that has been used to move files between 36-bit machines running the different TOPS-style operating systems (TOPS-10, TOPS-20, and TENEX). This article will concern itself primarily with tapes written in native TOPS-20 DUMPER format. This format is produced by default when you save files on a TOPS-20 system using the DUMPER utility. DUMPER-32 cannot write DUMPER-format tapes, it can only read them. Using DUMPER-32, you may do either of the following: * You can make a listing of the DUMPER tape, or a single saveset on the tape. This listing shows the names of all the savesets on the tape and the names of all the files in each saveset. It also shows the relative volume numbers of each tape in the volume set for each saveset (this information is only of interest if you have files or savesets which span more than one tape). * You can restore files from the DUMPER tape into disk files on the VAX. You can either restore all the files from a tape, or all the files from a particular saveset, or only certain files you specify, either from all all savesets or a particular saveset. When you use DUMPER-32 to restore files, it will to preserve the names of the files (for example, MYPROG.FOR.11 from the TOPS-20 system will be restored as MYPROG.FOR;11 on the VAX). DUMPER-32 will also convert TOPS-20 file protections into the equivalent VAX/VMS file protections. For example, if the file MYPROG.FOR was had the TOPS-20 protection code 774200 when you saved it from your TOPS-20 directory, it will be restored on the VAX with the protection (S=RWED, O=RWED, G=R, W). This protection code means that the system and the owner of the file can read, write, execute and delete the file, users in the same group as the owner can read the file, and other users have no access to the file. Finally, you can even use DUMPER-32 to create VAX/VMS directories on the fly as it restores files. This feature may be used to restore entire TOPS-20 "directory trees" from the tape into equivalent directory trees on the VAX using a single command. Page 2 1 Mounting Tapes to be Read by DUMPER-32 IUPUI has installed a command procedure called DMOUNT that may be used to mount TOPS-20 DUMPER tapes to be read on the VAX. The DMOUNT command procedure allocates a tape drive and issues the proper MOUNT command to get the tape mounted. The DMOUNT command procedure is executed using a command of the same name (DMOUNT). The DMOUNT command takes two parameters: (1) the volume-id of the tape to be mounted, and (2) the visual-id of the tape to be mounted. The volume-id is the identification number of the tape (usually "D" followed by a five digit number for TOPS-20 DUMPER tapes at IUPUI) If the volume set contains more than one volume, give the volume-id of the first tape, and include all of the volume i.d.s in the visual i.d. The visual i.d. is a quoted string that gives any other information required to authorize your access to the tape. The visual i.d. is sent to operator as a comment along with the MOUNT request. DMOUNT automatically requests the operator to mount the tape without the write-enable ring. Note however, that VAX/VMS currently does not make any requirement that operator is REQUIRED to load tapes mounted using the /NOWRITE qualifier. This severe deficiency is to be fixed in a future release of VMS. However, in the interim, take care to never use a tape specification as an output specification unless you are quite sure that you want to write on the tape. Also, you should never for any reason write on a TOPS-20 DUMPER tape using VMS commands. After you have successfully used DMOUNT to mount a TOPS-20 DUMPER tape, you may refer to the tape using the logical name DUMPER. 2 Format of DUMPER-32 Commands Commands to DUMPER-32 are given in one of two formats. The first format is used for the LIST feature. The second format is used for restoring files. The following descriptions describe the syntax of the commands using conventions similar to the syntax descriptions in the VMS HELP system. These conventions are: o Items in uppercase are typed in exactly as shown. o Items in lowercase are symbols standing for things to be typed in. For example, if you see "qualifiers" in lowercase, and you know that valid qualifiers are /LIST and /LOG, then you don't type in the word "qualifiers". You would instead either enter "/LIST" or "/LOG" (or both). o Items surrounded by square braces, [ or ], mean that the enclosed item is optional. The command format for listing a DUMPER tape using DUMPER-32 is: DUMPER/LIST[=file-spec] [qualifiers] input-tape The /LIST qualifier tells DUMPER-32 that you want a listing of the files Page 3 and savesets on the tape. If you do not supply the optional file-spec (file specification), DUMPER-32 will output the listing to your terminal. Otherwise, the listing will be written to the file you specified. The optional qualifiers tell DUMPER-32 other things about the tape. These will be discussed later in the section on qualifiers. The input-tape paramenter tells DUMPER-32 the device name of the tape drive on which your DUMPER tape is loaded. If you mounted the tape using the DMOUNT command, use the logical name DUMPER (defined for you by the DMOUNT command) to refer to the tape. The command format for restoring files from your DUMPER tape to the VAX is: DUMPER [qualifiers] input-tape output-spec The optional qualifiers tell DUMPER-32 other things about the tape. These will be discussed later in the section on qualifiers. The input-tape parameter tells DUMPER-32 the device name of the tape drive on which your DUMPER tape is loaded. If you mounted the tape using the DMOUNT command, use the logical name DUMPER (defined for you by the DMOUNT command) to refer to the tape. The output-spec (output specification) tells DUMPER-32 where it is to restore the files. The default output specification is all wildcards. This means that DUMPER-32 will try to restore the file to VAX/VMS disk devices and directories with the same names as the names on the tape. For example, if you had a file PS:MYPROG.FOR.13 on the tape, DUMPER-32 will try to restore the file to PS:[SMITH-JR]MYPROG.FOR;13 on the VAX. Note that if the the device or the directory does not exist, or if it does but you do not have access to restore files in it, the restore will fail. There are two ways to get around this problem. These are described in the next two subsections. The first is useful if you simply want to get the files off the tape into your default directory. The second is a little more complicated, but with it you can restore an entire directory tree of files into an equivalent (or nearly so) directory tree on the VAX. 2.1 Restoring Files into a Single Directory With this method, you simply specify completely both the device and directory where you want the files to go. For the device name, you can always use the name DISK on IUPUI's VAX 8800. This is a system-wide logical name search list that points to all the "user" (non-system) disks. Your directory will always be found on one of these disks. For the directory name, give the name of you top-level login directory, a subdirectory, or any directory to which you have write access. For example, in the example described above, if user SMITH-JR from the TOPS-20 system had a VAX access code called IJRS000 (and a login directory with the same name as his or her VAX access code, which is the usual case on IUPUI's VAX 8800), he or she could restore the files from Page 4 a DUMPER tape containing a saveset of all files from PS: to the login directory using the output specification DISK:[IJRS000]. Note that using this method, all files restored will be restored into the same directory. Example: $ DUMPER/REWIND/LOG/FORMAT=DUMPER DUMPER: DISK:[IJRS000] 2.2 Restoring an Entire Directory Tree of Files This method is a little trickier, and and is only required if you want to preserve the directory structure of the files restored from the tape. Here is a way you can restore an entire directory tree of files from the TOPS-20 system, creating an equivalent (or nearly so) directory tree on the VAX. There are two problems that must be solved before this can be accomplished. Take the example used previously and assume Smith not only wants to restore PS:*.*.*, but also PS:*.*.*, PS:*.*.*, PS:*.*.*, in fact, EVERYTHING in the TOPS-20 directory tree in and under PS:. The two problems that must be solved are: 1. There is no disk structure named "PS" on the VAX. DUMPER-32 will get upset when it looks for the disk structure and doesn't find it. 2. There is no top-level (i.e., default login) directory on the VAX called [SMITH-JR]. Even though DUMPER-32 can create directories, creating top-level directories on the VAX requires privileges that Smith doesn't have. However, any VAX/VMS user may create subdirectories under any directory they own, as long as they don't run out of disk quota, or exceed the maximum number of levels (8). Smith is clever however, and knows all about VAX/VMS logical names. A logical name is usually used to point to a particular file or directory (they can contain anything you want however, if you can figure out a use for it). VAX/VMS logical names are defined using the DEFINE command. For example: DEFINE FOR005 DISK:[IJRS000]MYINPUT.DAT or DEFINE PROJ_SOURCES DISK:[IJRS000.PROJECT.SOURCES] The usual use for a logical name is to point to a particular file for processing or output by a program (like the first example above, sort of like FILEDEFs in CMS), or a particular directory (for convenient access, like to be able to SET DEFAULT to the directory without having to give the entire directory specification, like the second example above). The VAX/VMS file system (called RMS, for Record Management Services) "knows" about logical names and translates them into their expansions when they appear in certain contexts in file specifications. These contexts are: Page 5 o A node name. A DECnet node name is a part of a file specification that ends in two colons (::). o A device name. A device name is the part of the file specification that ends with a colon (:). o There is one other context in which RMS looks for logical names. If a file specification is given that consists entirely of the valid filename characters (letters, digits, underscores (_), dollar signs ($) and hyphens (-)), RMS will first look to see whether the name is in fact a logical name. If it is, it is expanded. If it is not, it is considered to be the name of a file. What Smith really needs is a logical name that "behaves" exactly like a disk device name, in that he or she can give a directory specification after it. Conceptually, Smith wants a device name that behaves as if his top-level directory is Smith's own private disk structure, with which Smith can do anything he or she wants. So, Smith defines a "rooted logical name", as follows: DEFINE PS DISK:[IJRS000.] The difference from the example defining PROJ_SOURCES earlier is the period after the last directory name in the definition. This makes the difference between a logical name that simply points to a directory, as PROJ_SOURCES does, and a rooted logical name. A directory specification can be (in fact, usually must be) given after a rooted logical name. That's fine with Smith though, because now he or she can enter the following DUMPER command (prompts are shown here): $ DUMPER/REWIND/LOG/FORMAT=DUMPER/CREATE_DIRECTORY _From: DUMPER: _To: [] DUMPER-32 will restore all files from the first saveset on the tape into the default output specification, which is PS:[*]*.*;*. Note that because the rooted logical name PS has been defined, this is the same as DISK:[IJRS000.*...]*.*;*. Because the /CREATE_DIRECTORY qualifier was given, DUMPER-32 will create any directories that it has to in order to restore the files. Since the name PS points to Smith's top-level directory, any directories created will be created as subdirectories of Smith's top-level directory. So the files from the directories given in the earlier example will be restored as follows: PS: to DISK:[IJRS000.SMITH-JR] PS: to DISK:[IJRS000.SMITH-JR.FORTRAN] PS: to DISK:[IJRS000.SMITH-JR.FORTRAN.SOURCES] PS: to DISK:[IJRS000.SMITH-JR.CLASS] etc. Page 6 3 DUMPER-32 Command Qualifiers Command qualifiers may be used modify DUMPER-32's actions in several ways. These modifications include: o Informative messages - See the description of the /LOG qualifier. o Tape positioning - See the description of the /REWIND, /SKIP, and /SSNAME qualifiers. o Selecting files to be restored - See the description of the /SELECT and /SSNAME qualifiers. o Forcing particular output file formats - See the descriptions of the /BINARY and /REMOVE_LSNS qualifiers. o Specifying the recording density of the tape - See the description of the /DENSITY qualifier. o Specifying the logical format of the tape - See the description of the /BLOCKING_FACTOR and /FORMAT specifiers. DUMPER-32 qualifiers are: /BINARY /BINARY /NOBINARY (default) This qualifier causes files with a 36-bit word size to be restored in "binary" mode. The resulting file will be written using variable length records up to 510 bytes in size, with no carriage control. Each 36-bit word from the original file is stored in 5 successive 8-bit bytes in the VAX disk file as shown in the diagram below: 3333332 2222222 2211111 1111100 0000000 0 5432109 8765432 1098765 4321098 7654321 0 ! ! ! ! ! ! ! ! ! ! / ! ! ! ! ! ! ! ! !+-----!-/ ! ! ! ! ! ! ! ! !! ! 76543210 76543210 76543210 76543210 76543210 The leftmost five seven-bit fields from each 36-bit word are stored right justified in five 8-bit bytes in the VAX disk file. The remaining least significant bit of the 36-bit word is stored in the most significant bit of the fifth byte. This format will preserve all the bits from the TOPS-10 or TOPS-20 file. Note, however, that binary files from TOPS-10 and TOPS-20 cannot be used with any of the VAX/VMS utilities. Page 7 /BLOCKING_FACTOR /BLOCKING_FACTOR=number The /BLOCKING_FACTOR qualifier is used to specify the value of SET BLOCK that was used when creating the tape; that is, the number of logical blocks per physical block on the tape. The default is 1. /CREATE_DIRECTORY /CREATE_DIRECTORY /NOCREATE_DIRECTORY (default) This qualifier indicates that directories are to be created as necessary while restoring files. By default, directories are not created. /FORMAT /FORMAT[=keyword] This qualifier specifies the format of the input tape. The default format is INTERCHANGE. BACKUP This indicates that the tape was written in TOPS-10 BACKUP native mode. DUMPER This indicates that the tape was written in TOPS-20 DUMPER native mode. INTERCHANGE This indicates that the tape was written in either TOPS-10 BACKUP INTERCHANGE mode or TOPS-20 DUMPER INTERCHANGE mode. /LIST /LIST[=output-file] This qualifier indicates that files are not to be restored; rather, a listing of the files in the next saveset is to be written to "output-file". The default "output-file" is the user's terminal. /LOG /LOG[=keyword] This qualifier indicates that certain events should be logged on the user's terminal. Events include file restoration and directory creation. The default keyword is FILES. ALL Page 8 This indicates that all events should be logged. DIRECTORIES This indicates that directory creations should be logged. FILES This indicates that file creations should be logged. /REMOVE_LSNS /REMOVE_LSNS (default) /NOREMOVE_LSNS This qualifier indicates that any EDIT or SOS line sequence numbers should be removed when restoring text files. The default is to always remove line sequence numbers from text files. /REWIND /REWIND /NOREWIND (default) This qualifier indicates that the tape should be rewound before reading. /SELECT /SELECT[=file-specification] This qualifier indicates that only certain files should be restored. The "file-specification" may contain wildcards; only files matching the given specification will be restored. The default specification is "*.*.*". /SKIP /SKIP[=number] This qualifier causes a number of savesets to be skipped before reading. The default number is 1. /SSNAME /SSNAME[=saveset-name] This qualifier indicates that the tape is to be searched for the named saveset. The default "saveset-name" is ALL. If /SSNAME is not given, the default is to read the next saveset on the tape.