`(10) Patent No:
`a2) United States Patent
`Hamilton, II et al.
`(45) Date of Patent:
`Sep. 13, 2005
`
`
`US006944790B2
`
`6,449,682 BL *
`9/2002 Toorians ..0.... eee 711/100
`(54) SYSTEM AND METHOD FOR COLLECTING
`
`6,453,396 Bl *
`9/2002 Booneet al. ........+ 711/162
`AND RESTORING USER ENVIRONMENT
`6,487,558 B1 * 11/2002 Hitchcocksenseseeseeceeceees 707/200
`DATA USING REMOVABLE STORAGE
`6,532,535 B1 *
`3/2003 Maffezzoni et al.
`........... 713/1
`6,594,780 B1 *
`7/2003 Shen et al... we TLA4/15
`py
`‘
`2001/0013102 Al *
`Inventors: TT J
`(75)
`8/2001 Tsuchiyaetal... 714/6
`
`
`
`harlottesville,VA(US); Steven Jay 2002/0135613 AL * 9/2002 O’Hara wee 345/745
`
`
`2002/0147938 AL * 10/2002 Hamilton et al. css 714/6
`Lipton, Flower Mound, TX (US)
`
`
`
`(73) Assignee:
`
`International Business Machines
`Corporation, Armonk, NY (US)
`
`(*) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`US.C. 154(b) by 583 days.
`
`JP
`JP
`
`FOREIGN PATENT DOCUMENTS
`07-007770 A W/1995 eee H04Q/9/00
`11-085628 A
`31999
`esesrssees GO6F/12/16
`OTHER PUBLICATIONS
`
`(21) Appl. No.: 09/826,608
`(22) Filed
`Apr.
`5. 2001
`Pr.
`ued:
`95
`(65)
`Prior Publication Data
`US 2002/0147938 Al Oct. 10, 2002
`
`Int. Ue? cieccccceccecseesesseescescescescesvscessesceaees GO6F 11/00
`(51)
`(52) U.S. Che ccc ecteseneeeecteneseneeecenaes 714/6; 714/24
`(58) Field of Search oe 714/6, 15, 24
`
`Polyzois,et al., “Evaluation of Remote Backup Algorithms
`for Transaction Processing System,” ACM Transactions on
`Database Systems, vol. 19, #3, p. 423-429, Sep. 1994,
`(Abstract Only).
`* cited by examiner
`
`Primary Examiner—Bryce P. Bonzo
`(74) Attorney, Agent, or Firm—Van Leeuwen & Van
`Leeuwen; Joseph T. Van Leeuwen; David A. Mims, Jr.
`
`(57)
`
`ABSTRACT
`
`(56)
`
`References Cited
`
`A data collection program collects data from a user’s work-
`U.S. PATENT DOCUMENTS
`station and captures the user environment data, including
`user settings and program application data. The user envi-
`een A . ulhogs Rani Coesen ronment data is stored on a removable nonvolatile storage
`5.405572 A
`i1006 Tanaka t aL 7
`: ma/47
`media for duplication processing. The stored user environ-
`5692121 A
`11/1997 Bozsoetal
`~ 713/13
`mentdata is processed by a duplication process to duplicate
`_.. 714/34
`5712971 A
`1/1998 Stanfill et al.
`...
`the user environment data from the old workstation onto a
`
`1/1998 Halladay .........
`.. TL7/168
`5,713,024 A *
`new workstation or for recovery from a catastrophic system
`8/1998 Bailey etal... 707/202
`5,794,252 A
`failure. A variety of user environmentsettings, not tradition-
`T/1999 Perks vices 707/200
`5,924,102 A
`ally captured and restored by traditional backup software,
`5,941,993 A
`8/1999 Tanakaetal. ...
`.. 714/6
`are captured and restored. For example, licensing informa-
`6,119,128 A
`9/2000 Courter et al.
`...
`- 707/202
`tion and application personality data is identified, stored, and
`oelod A 1seen Omen ct v ” mttp
`recovered along with other user-specific information such as
`5167,
`eston et al.
`..
`.
`.
`6,205,527 B1 *
`3/2001 Gosheyet al... 71/62
`‘hostnames, IP addresses, and the like.
`6,260,124 B1 *
`7/2001 Crockett et al.
`........0... 711/162
`6,289,426 B1 *
`9/2001 Maffezzoniet al.
`........ 711/173
`
`
`
`
`11 Claims, 11 Drawing Sheets
`
`
`ia 700
`105
`115
`125
`
`
`hon
`enters
`[_passords
`110
`120
`130
`
`ty
`user Ids
`othersystem
`definitions
`parameters
`
`140
`
`
`
`
`
`
`
`
`
`
`
`
`145
`
`Google Exhibit 1094
`Google v. VirtaMove
`
`
`
`
`
`
`
`7195
`
`165
`fo
`185
`
`inant
`detnns
`passwords
`
`fe
`180
`190
`y
`mers
`other system
`definitions:
`parameters:
`
`La}
`=
`
`
`Ee}
`
`5
`=
`
`a
`
`
`
`
`
`|
`ISI
`
`
`
`=)
`=
`
`160
`
`136
`
`Old
`Usarid
`
`165
`~~
`
`New
`Userid
`
`
`
`
`
`
`
`Google Exhibit 1094
`Google v. VirtaMove
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 1 of 11
`
`US 6,944,790 B2
`
`Interfaces
`
`definitions
`
`
`tty
`
`100
`
`
`
`105
`
`110
`
`115
`
`definitions
`
`420
`
`ae
`
`1
`
`Old
`
`130
`
`other system
`arameters
`
` 125
`
`
`Userid
`
`O
`
`
`
`
`
`165
`
`Network
`
`175
`
`printer
`
`185
`
`tty
`
`userids
`
` 4 parameters
`Figure 1
`
`190
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 2 of 11
`
`US 6,944,790 B2
`
`
`
`
`Time for
`Data Collection?
`210
`
`
`
`Collection
`Preparation
`
`and
`Execution
`(See Fig. 3)
`220
`
`
`
`
`
`
`250
`
`
` Timefor
`
`Duplication?
`240
`
`
`Yes
`
`Duplication
`Preparation
`and
`Execution
`(See Fig. 4)
`
`Figure 2
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 3 of 11
`
`US 6,944,790 B2
`
`(
`
`Start300
`
`Check Available
`Tape Space
`305
`
`Identify
`License Files
`310
`
`Identify
`Application
`Personality Data
`315
`
`Add License and
`Personality Data to
`Data Collection
`Program
`320
`
`identify
`Workstations
`325
`
`Add Workstations
`to Collection List
`
`330
`
`
`
`
`
`
` Data
`Collection
`
`(See Fig. 5)
`340
` Collect
`
`Application
`Information
`
`
`(See Fig. 6)
`350
`
`
`Create
`Quality
`Checklist
`(See Fig. 7)
`360
`
`
`
`
`
`J
`
`
`Write Data
`to Tape
`370
`
`
`Figure 3
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 4 of 11
`
`US 6,944,790 B2
`
`
`Update
`Duplication
`Program
`410
`
`
`
`
`
`
`
`
`Hostname,
`IP Address
`420
`
`Transfer
`Duplication
`Program
`to Workstation
`430
`
`
`
`
`
`Duplication
`(See Fig. 8)
`440
`
`X-Windows
`Settings
`(See Fig. 9)
`450
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Restore
`Permissions
`460
`
`ecreate
`Unique
`Filesystems
`470
`
`1
`
`Restore Data
`To Unique
`Filesystems
`480
`
`End
`490
`
`
`
`Figure 4
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 5 of 11
`
`US 6,944,790 B2
`
`
`
`Start
`500
`
`Test Installation
`Server Name
`505
`
`Set Environment
`Variables
`
`510
`
`Verify connectivity
`sis
`
`Get home/local
`and other
`information
`520
`
`Get Network
`Information
`525
`
`Get Status of
`Ethemet Adapters
`530
`
`560
`
`Get IP Addresses
`of Ethernet
`Adapters
`535
`
`
`
`Get Default
`Gateway
`Addresses
`540
`
`Get Default
`Netmasks
`049
`
`Get Domain
`Information
`550
`
`Get System
`Information
`595
`
`Get TTY
`Information
`
`Get Print Queue
`Information
`
`565
`
`Get Application
`Specific
`Information
`670
`
`4}
`
`Get License
`Information
`575
`
`Get Filesystem
`Information
`580
`
`
`
`
`
`
`
`Figure §
`
`
`
`
`
`Collect Application
`Information from
`Workstation
`620
`
`
`
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 6 of 11
`
`US 6,944,790 B2
`
`
`
`Copy Program
`from Media to
`Workstation
`
`
`
`
`
`
` 610
`
`
`More Applications?
`630
`
`680
`
`
`
`Get Application
`Logical Volume
`
`Name
`
`
`650
`
`
` Get Application
`Mount point/
`filesystem name
`
`660
`
`
`
`Get Application
`filesystem size
`
`670
`
`
`
`
`Figure 6
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 7 of 11
`
`US 6,944,790 B2
`
`
`
`
`
`
`
`
`
`
`
`
`Checkrestoration
`of /usr/local
`
`735
`
`Check TTYs
`740
`
`
`
`
`
`Check remote
`printers
`745
`
`Check ADSM
`include/exclude
`750
`
`
`Check application
`information
`
`789
`
`
`
`Figure 7
`
`Check Client
`hostname
`105
`
`Check Connection
`to Tape Drive
`710
`
`
`
`
`
`Check networking
`files
`rar)
`
`Check restoration
`of fhome/local
`720
`
`
`
`Check Password
`128
`
`Checkfilesystems
`730
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 8 of 11
`
`
`
`Reset IP
`addresses and
`hostnamesto real
`addresses/names
`865
`
`Restore home/local
`to workstation
`840
`
`Restore
`ADSM
`845
`
`Restore
`Applications
`850
`
`Restore
`TTYs
`855
`
`Restore
`Remote Printers
`860
`
`Check Ethernet
`interfaces
`870
`
`Resetfile
`permissions
`875
`
`Disable
`Monitor Timeout
`880
`
`
`
` US 6,944,790 B2
`
`Change
`License Files
`885
`
`Cleanup
`890
`
`
`
`Figure 8
`
`Install / Configure
`Tape Device
`(if necessary)
`810
`
`
`
`Load Tape on
`Tape Device
`825
`
`Restore
`Networking Files
`830
`
`Restore
`Unique System
`information
`835
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 9 of 11
`
`US 6,944,790 B2
`
`940
`
`Set
`Landscape
`930
`
`New Window
`910
`
`End Session
`920
`
`Set
`Portrait
`
`Figure 9
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 10 of 11
`
`US 6,944,790 B2
`
` Processor
`
`1000
`
`1001
`
`
`Host Bus
`
`:
`
`4005
`
`»
`
`Level Two
`
`Host-to-PCl
`
`.
`Main Memory
`1020
`
`PC! Bus
`
`
`
`1070
`
`
`1068
`
`Figure 10
`
`
`
`U.S. Patent
`
`Sep. 13, 2005
`
`Sheet 11 of 11
`
`US 6,944,790 B2
`
`
`System
`Duplication
`
` 1100
`
`
`
`
` Collection
`Duplication
`
`
`
`
`111
`1120
`
`
`
`
`
`Data
`Collection of
`X-Windows
`
`Duplication
`
`Collection
`
`Application
`
`
`
`Settings
`
`
`
`Information
`
` 1130
`170
`
`
`1150
`1180
`
`
`
`
`Workstation
`Quality
`List
`Checklist
`
`
`
`
`
`
`
`414
`1160
`
`Figure 11
`
`
`
`US 6,944,790 B2
`
`1
`SYSTEM AND METHOD FOR COLLECTING
`AND RESTORING USER ENVIRONMENT
`DATA USING REMOVABLE STORAGE
`
`RELATED APPLICATIONS
`
`This application is related to the following co-pending
`U.S. patent applications filed on Mar. 31, 2000 and having
`the same inventors and assignee: “System and Method for
`Event-Based Computer System Duplication” (application
`Ser. No. 09/540,914, filed Mar. 31, 2000), “System and
`Method for Computer System Duplication”(application Ser.
`No. 09/540,344, filed Mar. 31, 2000), and “Method and
`System for Implementing Network Filesystem-Based Cus-
`tomized Computer System Automated Rebuild Tool”
`(application Ser. No. 09/422,361, filed Oct. 21, 1999) each
`by Hamilton and Lipton and each assigned to the IBM
`Corporation.
`
`BACKGROUND
`
`1. Field of the Invention
`
`The present invention relates to information processing
`technology. Moreparticularly, the present invention relates
`to a system and method for simplifying the restoration and
`recovery of user environment data in a computer system.
`2. Description of the Related Art
`The UNIX operating system is an interactive time-sharing
`operating system invented in 1969. The UNIX operating
`system is a multi-user operating system supporting serial
`and network connected terminals for multiple users. UNIX
`is a multitasking operating system allowing multiple users to
`use the same system simultaneously. The UNIX operating
`system includes a kernel, shell, and utilities. UNIX is a
`portable operating system, requiring only the kernel to be
`written in assembler, and supports a wide range of support
`tools including development, debuggers, and compilers.
`As a multi-user operating system, UNIX allows multiple
`people to share the same computer system simultaneously.
`UNIX accomplishes this by time-slicing the computer’s
`central processing unit, or “CPU,” into intervals. Each user
`gets a certain amount of time for the system to execute
`requested instructions. After the user’s allotted time has
`expired, the operating system intervenes by interrupting the
`CPU,saving the user’s program state (program code and
`data), restores the next user’s program state and begins
`executing the next user’s program (for the next user’s
`amount of time). This process continues indefinitely cycling
`through all users using the system. When the last user’s
`time-slice has expired, controlis transferred backto the first
`user again and another cycle commences.
`The UNIX operating system is both a multi-user operating
`system and a multi-tasking operating system. As the name
`implies, the multi-user aspect of UNIX allows multiple users
`to use the same system at the same time. As a multi-tasking
`operating system, UNIX permits multiple programs (or
`portions of programscalled threads of execution) to execute
`at the same time. The operating system rapidly switches the
`processor between the various programs (or threads of
`execution) in order to execute each of the programs or
`threads. IBM’s OS/2 and Microsoft’s Windows 95/98/NT
`are examples of single-user multi-tasking operating systems
`while UNIX is an example of a multi-user multi-tasking
`operating system. Multi-tasking operating systems support
`both foreground and backgroundtasks. A foregroundtask is
`a task that directly interfaces with the user using an input
`device and the screen. A background task runs in the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`background and doesnot access the input device(s) (such as
`the keyboard, a mouse, or a touch-pad) and does not access
`the screen. Background tasks include operations like print-
`ing which can be spooled for later execution.
`The UNIX operating system keeps track of all programs
`running in the system and allocates resources, such as disks,
`memory, and printer queues, as required. UNIX allocates
`resourcesso that, ideally, each program receives a fair share
`of resources to execute properly. UNIX doles out resources
`using two methods: scheduling priority and system sema-
`phores. Each program is assigned a priority level. Higher
`priority tasks (like reading and writing to the disk) are
`performed more regularly. User programs may have their
`priority adjusted dynamically, upwards or downwards,
`depending on their activity and the available system
`resources. System semaphores are used by the operating
`system to control system resources. A program can be
`assigned a resource by getting a semaphore by making a
`system call to the operating system. Whenthe resource is no
`longer needed, the semaphore is returned to the operating
`system, which can then allocate it to another program.
`Disk drives and printers are serial in nature. This means
`that only one request can be performedat any one time. In
`order for more than one user to use these resources at once,
`the operating system manages them using queues. Each
`serial device is associated with a queue. When a programs
`wants access to the device (ie., a disk drive) it sends a
`request to the queue associated with the device. The UNIX
`operating system runs background tasks (called daemons),
`which monitor the queues and service requests for them. The
`requests are performed by the daemon process and the
`results are returned to the user’s program.
`Multi-tasking systems provide a set of utilities for man-
`aging processes. In UNIX,these are ps (list processes), kill
`(kill a process), and & at the end of a commandline (run a
`process in the background). In UNIX,all user programs and
`application software use the system call interface to access
`system resources such as disks, printers, and memory. The
`system call interface in UNIX providesa set of system calls
`(C language functions). The purpose of the system call
`interface is to provide system integrity, as all low-level
`hardware access is under the control of the UNIX operating
`system and not the user-written programs. This prevents a
`program from corrupting the system.
`Upon receiving a system call, the operating system vali-
`dates its access permission, executes the request on behalf of
`the requesting program, and returns the results to the
`requesting program. If the request is invalid or the user does
`not have access permission, the operating system does not
`perform the request and anerroris returned to the requesting
`program. The system call is accessible as a set of C language
`functions, as the majority of UNIX is written in the C
`language. Typical system calls are: _read—for reading from
`the disk; __write—for writing to the disk; _getch—for
`reading a character from a terminal; _putch—for writing a
`character to the terminal; and _ioctl—for controlling and
`setting device parameters.
`The Kernel
`As the name implies, the Kernel is at the core of the UNIX
`operating system and is loaded each time the system is
`started, also referred to as a system “boot.” The kernel
`manages the resources of the system, presenting them to the
`users as a coherent system. The user does not have to
`understand much,if anything, about the kernel in order to
`use a UNIX system. The kernel provides various necessary
`functions in the UNIX environment. The kernel manages the
`system’s memory and allocates it to each process. It takes
`
`
`
`US 6,944,790 B2
`
`4
`called i-node numbers, are used only within the UNIX
`kernel itself. While UNIX uses i-node numbers to refer to
`
`files, it allows users to identify each file by a user-assigned
`name. A file name can be any sequence of characters and can
`be up to fourteen characters long.
`There are three typesof files in the UNIX file system: (1)
`ordinary files, which may be executable programs,text, or
`other types of data used as input or produced as output from
`some operation; (2) directory files, which contain lists of
`files in directories outlined above; and (3) special files,
`which provide a standard method of accessing input/output
`devices.
`
`Internally, a directory is a file that contains the names of
`ordinary files and other directories and the corresponding
`i-node numbersforthe files. With the i-node number, UNIX
`can examineotherinternal tables to determine wherethefile
`is stored and makeit accessible to the user. UNIX directories
`
`3
`time for the kernel to save and restore the program’s state
`and switch from one program to the next
`(called
`dispatching). This action needs to execute quickly because
`time spent switching between programstakes away from the
`time available to actually run the users’ programs. The time
`spent in the “system state” where the kernel performs tasks
`like switching between user programs is the system over-
`head and should be kept as low as possible. In a typical
`UNIX system, system overhead should be less than 10% of
`the overall time.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`The kernel also schedules the work to be done by the
`central processing unit, or “CPU,” so that the work of each
`useris carried outefficiently. The kernel transfers data from
`one part of the system to another. Switching between user
`programs in main memoryis also done by the kernel. Main
`system memory is divided into portions for the operating
`system and user programs. Kernel memory space is kept
`themselves have names, examples of which were provided
`separate from user programs. When insufficient main
`above, and can be up to fourteen characters long.
`memory exists to run a program, another program is written
`out to disk (swapped) to free enough main memory to run
`UNIX maintains a great deal of information aboutthefiles
`that it manages. For eachfile, the file system keepstrack of
`the first program. The kernel determines which program is
`the file’s size, location, ownership, security, type, creation
`the best candidate to swap out to disk based on various
`time, modification time, and access time. All of this infor-
`factors. When too many programsare being executed on the
`mation is maintained automatically by the file system as the
`system at the same time, the system gets overloaded and the
`files are created and used. UNIXfile systems reside on mass
`operating system spends more time swapping files out to
`storage devices such as disk drives and disk arrays. UNIX
`disk and less time executing programs causing performance
`organizes a disk into a sequence of blocks. These blocks are
`degradation. The kernel also accepts instructions from the
`“shell” and carries them out. Furthermore,
`the kernel
`usually either 512 or 2048 bytes long. The contentsofafile
`enforces access permissions that are in place in the system.
`are stored in one or more blocks which may be widely
`scattered on the disk.
`Access permissions exist for each file and directory in the
`system and determine whether other users can access,
`execute, or modify the given file or directory.
`Files and Directories
`
`For file handling, UNIX uses a hierarchical directory
`structure for organizing and maintaining files. Access per-
`missions correspond to files and directories. As previously
`stated,
`the UNIX operating system organizes files into
`directories which are stored in a hierarchical
`tree-type
`configuration. At the top of the tree is the root directory
`which is represented by a slash (/} character. The root
`directory contains one or moredirectories. These directories,
`in turn, may contain further directories containing userfiles
`and other system files. A few standard directories that will be
`found in many UNIXare as follows:
`/bin This directory contains the basic system commands.
`/etc This directory contains system configuration files and
`programs used for administrating the system.
`/lib This directory contains the system libraries.
`/tmp This directory is used to store temporaryfiles.
`/usr/bin This directory contains the commandsthat are not
`stored in /bin.
`/usr/man This directory contains manual pages for pro-
`grams
`/usr/local This directory contains local programsthat were
`installed by the system administrator (sysadmin) and
`were not
`included with the original system.
`In
`particular, Aisr/local/bin contains local commandfiles
`(binaries), and /usr/local/man contains local manual
`pages.
`/home Theactual directory location varies from system to
`system, but somewhere on the system will be a location
`whereall of the users’ homedirectories are located.
`
`The fundamental structure that the UNIX operating sys-
`tem uses to store informationis thefile. A file is a sequence
`of bytes. UNIX keeps track of files internally by assigning
`each file a unique identification number. These numbers,
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`An ordinaryfile is addressed throughthe i-nodestructure.
`Each i-node is addressed by an index contained in an i-list.
`The i-list is generated based on the size of the file system,
`with larger file systems generally implying morefiles and,
`thus, larger i-lists. Each i-node contains thirteen 4-byte disk
`address elements. The direct i-node can contain up to ten
`block addresses. If the file is larger than this,
`then the
`eleventh address points to the first
`level
`indirect block.
`Addresses 12 and 13 are used for second level andthird level
`indirect blocks, respectively, with the indirect addressing
`chain beforethefirst data block growing by onelevel as each
`new address slot in the direct i-node is required.
`All input and output (I/O) is done by reading and writing
`files, because all peripheral devices, even terminals, are
`treated as files in the file system. In a most general case,
`before reading and writinga file, it is necessary to inform the
`system of the intention to do so by openingthefile. In order
`to write to a file, it may also be necessary to create it. When
`a file is opened or created (by way of the “open”or “create”
`system calls), the system checks for the right to do so and,
`if the user has the right to do so,
`the system returns a
`non-negative integer called a file descriptor. Whenever I/O
`is to be done onthisfile, the file descriptor is used, instead
`of the file name, to identify the file. The open file descriptor
`has associated with it a file table entry kept in the “process”
`space of the user who has opened the file.
`In UNIX
`terminology,
`the term “process” is used interchangeably
`with a program that is being executed. Thefile table entry
`contains information about an open file, including an i-node
`pointer for the file and the file pointer for the file, which
`defines the current position to be read or written in the file.
`All information about an open file is maintained by the
`system.
`In conventional UNIX systems, all input and output is
`done by two system calls—‘“read” and “write”—which are
`accessed from programshaving functions of the same name.
`For both system calls, the first argumentis a file descriptor,
`
`
`
`US 6,944,790 B2
`
`5
`the second argumentis a pointer to a buffer that serves as the
`data source or destination, and the third argument is the
`numberof bytes to be transferred. Each “read” or “write”
`system call counts the number of bytes transferred. On
`reading, the number of bytes returned may beless than the
`number requested because fewer bytes than the number
`requested remain to be read. Areturn code of zero meansthat
`the end-of-file has been reached, a return code of -1 means
`that an error occurred. For writing, the return code is the
`number of bytes actually written. An error has occurred if
`this numberdoes not match the numberof bytes which were
`supposed to be written.
`Shells
`line
`input
`UNIX monitors the state of each terminal
`connected to the system with a system processcalled getty.
`When getty detects that a user has turned on a terminal, it
`presents the logon prompt, and when the userid and pass-
`word are validated,
`the UNIX system associates a shell
`program (such as sh) with that terminal placing the user in
`the shell program. The shell program provides a promptthat
`typically signifies which shell program is being executed.
`The user types commandsat the prompt. The shell program
`acts as a command interpreter taking each command and
`passing them to the kernel to be acted upon. The shell then
`displays the results of the operation on the screen. Users use
`the shell to create a personalized environmentthat suits the
`needs of the user. The user can change environment vari-
`ables that control the user’s environment.
`The EDITOR environment variable sets the editor that
`will be used by other programs such as the mail program.
`The PAGERenvironmentvariable sets the pagerthat will be
`used by programs such as man to display manual pages. The
`PATHenvironmentvariable specifies the directories that the
`shell is to look throughto find a command. These directories
`are searched in the order in which they appear. The
`PRINTERenvironmentvariable sets the printer to whichall
`output is sent by the lpr command. The SHELLvariable sets
`the default shell that is used by the user. The TERM variable
`sets the terminal type for programs such as the editor and
`pager. The TZ environment variable sets the time zone
`where the user is located.
`There are several shells that are available to UNIX users.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`6
`amount of customizing a user may make to his or her
`environment, duplicating a user’s computing environment
`has become even more challenging. Recreating UNIX
`images,
`in particular,
`requires that numerous system
`parameters,
`including printer definitions,
`tty definitions
`(terminal definitions or the name of a particular terminal
`controlling a given job or even serial port definitions—in
`UNIX such devices have names of the form tty*), network
`interfaces, user Ids, and passwords. Failure to duplicate all
`such parameters mayresult in the inability of the user to run
`key applications or access critical resources following such
`a system duplication. Challenges in present duplication
`schemes wherein the duplication is largely a manual effort
`include time consuming manualtasks performed by the user
`and/or system administrator and the fact that such manual
`tasks are prone to errors.
`SUMMARY
`
`It has been discovered that user environment data can be
`
`duplicated from a workstation to another workstation in a
`semi-automated fashion. Initially, an automated data collec-
`tion process collects user environment data from the old
`computer system. User environment data may include appli-
`cation program data, license information, tty settings, cus-
`tomized directories, and other user customized workstation
`environmentvariables.
`
`A list of workstations can also be used to duplicate a
`number of workstations, for example when a group of
`individuals are upgrading their workstations. The user envi-
`ronment data is stored for later duplication onto a new
`workstation. The user environment data is stored onto a
`removable computer operable medium, such as a diskette or
`a magnetic tape, for transporting and inputting into the new
`workstation or for use in restoring the old computer when a
`system failure occurs. Duplicating the user environment
`settings on a new workstation involves reading the user
`environment data stored on the computer operable medium
`and applying the user environmentsettings to the worksta-
`tion.
`
`The foregoing is a summary and thus contains, by
`necessity, simplifications, generalizations, and omissions of
`detail; consequently, those skilled in the art will appreciate
`Each shell provides different features and functionality than
`that the summary isillustrative only and is not intended to
`other shells. The most common UNIX shell programsare the
`be in any way limiting. Other aspects, inventive features,
`“Bourne” shell, the “C” shell, the “TC” shell, the “Korn”
`and advantagesof the present invention,as defined solely by
`shell, and the “BASH”shell. As well as using the shell to run
`the claims, will become apparent in the non-limiting detailed
`commands, each of these shell programs have a built-in
`description set forth below.
`programming languagethat a user can use to write their own
`BRIEF DESCRIPTION OF THE DRAWINGS
`commandsor programs. A user can put commandsintoafile
`50
`knownasa shell script—and executethefile like a command
`The present invention may be better understood, and its
`or program. Shells invoke two types of commands: internal
`numerous objects, features, and advantages made apparent
`commands(such as set and unset) which are handled by the
`to those skilled in the art by referencing the accompanying
`shell program and external commands(suchas ls, grep, sort,
`drawings. The use of the same reference symbols in different
`and ps) which are invoked as programs.
`drawings indicates similar or identical items.
`Challenges With Duplicating Systems in the Prior Art
`FIG. 1 is a system diagram showing user environment
`Oneadvantage of the UNIX operating system is that users
`data being duplicated through a computer operable medium;
`can customize their working environmentto suit their needs.
`FIG. 2 is a high-level flowchart showing of one embodi-
`For example, users can choose a default editor, a pager to
`ment of the present invention;
`display manual pages, a path to specify directories that are
`FIG. 3 is a mid-level flowchart showing the collection
`searched for commands,a default printer, a terminal type for
`phase;
`use by the editor and the pager, a time-zone for displaying
`FIG. 4 is a mid-level flowchart showing the duplication
`the correct time, and the shell program that is associated
`phase;
`with the user’s terminal upon logging on to the system.
`FIG. 5 is a lower-level flowchart showing the data col-
`One challenge in today’s complex computing environ-
`lection steps;
`ment is moving a user from one system to another due to
`system changes or user relocation from one system to
`FIG. 6 is a lower-level flowchart showing the application
`information collection;
`another system. Because of computer complexity and the
`
`55
`
`60
`
`65
`
`
`
`US 6,944,790 B2
`
`7
`FIG. 7 is a lower-level flowchart showing the creation of
`a quality checklist;
`FIG. 8 is a low-level flowchart showing duplication steps;
`FIG. 9 is a lower-level flowchart showing display settings
`duplication;
`FIG. 10 is a block diagram showing an information
`handling system; and
`TIG. 11 is a hierarchy chart showing the script files used
`in one embodiment of the present invention.
`DETAILED DESCRIPTION
`
`The following is intended to provide a detailed descrip-
`tion of an example of the invention and should not be taken
`to be limiting of the invention itself. Rather, any number of
`variations may fall within the scope of the invention which
`is defined in the claims following the description.
`FIG. 1 is a system diagram illustrating user environment
`data being copied and sent from one computer system to
`another computer system. The user’s old user environment
`data 100 includes networkinterfaces 105,tty definitions 110,
`printer definitions 115, userids 120, passwords 125, and
`other system parameters 130, such as application specific
`information. In essence, old user environment data 100
`includes the customizations and modifications made to the
`
`user’s account as a result of the user’s preferences or made
`so the user could better perform his or her job related tasks.
`In this example, the user is moving from old userid 135 in
`old computer system 140 to new userid 155 connected to
`newcomputer system 160. Once old user environmentdata
`100 is gathered from old computer system 140, they are
`transferred to new computer system 160 using nonvolatile
`computer media 145. Nonvolatile computer media 145 may
`be may be a diskette, magnetic tape, ZIP disk, JAZ disk,
`CD-R (recordable CD-ROM), hard drive, optical disk, or
`any medium that can transfer data by being transported from
`one computer system to another.
`After old user environment data 100 has been received at
`
`new computer system 160, a process is invoked that dupli-
`cates old user environment data 100 onto new computer
`system 160 creating new user environment data 195. Simi-
`larly to old user environment data 100, new user environ-
`ment data 195 includes network interfaces 165, tty defini-
`tions 170, printer definitions 175, userids 180, passwords
`185, and other system parameters 190, such as application
`specific information. After old user environment data 100
`has been duplicated onto new computer system 160,
`the
`customization settings are ultimately the sameasthe settings
`the user was accustomed to using on old computer system
`140.
`
`In addition to moving from one system to another system,
`environment data 100 may be captured in response to
`various events that occur in the system. For example, on a
`given schedule, the user’s environment data may be cap-
`tured and stored on old computer system 140 or new
`computer system 160. In this manner, the environmentdata
`100 is periodically captured so that if a system failure occurs
`on old computer system 140, new userid 155 can quickly be
`created and the environment data restored creating new
`environment data 195 and the user can have a substantially
`similar system in operation in a minimum amountoftime.
`Other events, or triggers, may be to capture environment
`data 100 each time enviro