Built-In Backup Programs


Most HP-UX system administrators employ a dual backup strategy. The first is to use the make_tape_recovery command of Ignite-UX to create a bootable backup tape of their root volume ( make_tape_recovery is covered in Chapter 9). You can create a bootable recovery archive across a network with make_net_recovery . Secondly, a backup program is used to back up the balance of data on the system. In this chapter I'll give an overview of several backup commands. I won't cover any advanced backup programs such as HP's OmniBack. Advanced backup tools, however, can make tasks such as centralized backup and overall management of backup much easier.The last section in this chapter covers backup of Virtual Partitions (vPars) and can be applied to hard partitions (nPartitions) as well.

Here is a brief overview of backup programs I'll cover in upcoming sections:

tar

tar is widely considered the most portable of the backup and restore programs. tar is the most popular generic backup utility. You will find that many applications are shipped on tar tapes. This is the most widely used format for exchanging data with other UNIX systems. tar is the oldest UNIX backup method and therefore runs on all UNIX systems. You can append files to the end of a tar tape, which you can't do with fbackup . When sending files to another UNIX user , I would strongly recommend tar , but tar is as slow as molasses, so you won't want to use it for your full or incremental backups . One highly desirable aspect of tar is that when you load files onto a tape with tar and then restore them onto another system, the original users and groups are retained.

fbackup

fbackup has a lot of functionality associated with it, such as specifying whether the backup is full or incremental, different levels of backup, files and directories to be included or excluded, support for a graph file which specifies files to be included and excluded, and other advanced features. fbackup is an HP-UX-only utility, and tapes can be read using frecover on HP-UX systems only.

cpio

cpio is also portable and easy to use, like tar . In addition, cpio is much faster than tar - not as fast as fbackup , but much faster than tar . cpio is good for replicating directory trees.

dd

This is a bit-for-bit copy. It is not smart in the sense that it does not copy files and ownerships; it just copies bits. You could not, therefore, select an individual file from a dd tape as you could with frecover, tar , restore or cpio. dd is used primarily to convert data such as EBCDIC to ASCII.

dump

dump is similar to fbackup . If you use fbackup on HP-UX, you will see much similarity when you use dump. dump provides the same level backup scheme as fbackup and creates /var/adm/dumpdates, which lists the last time a file system was backed up. restore is used to read information backed up with dump . dump , however, works only with HFS file systems and not VxFS, and it assumes that you are using a reel tape.

tar

tar is widely considered the most portable of the backup and restore programs. You will find that many applications are shipped on tar tapes and many UNIX files downloaded from the Internet are in tar format. This is the most widely used format for exchanging data with other UNIX systems. tar is the oldest UNIX backup method and therefore runs on all UNIX systems. You can append files to the end of a tar tape, which you can't do with many other programs. When sending files to another UNIX user, I would strongly recommend tar . tar is as slow as molasses, so you won't want to use it for your full or incremental backups if you have a lot of data to back up. One highly desirable aspect of tar is that when you load files onto a tape with tar and then restore them onto another system, the original users and groups are retained.

We'll use several tar commands in the upcoming examples, including the following:

 #  tar cf /dev/rmt/0m /var  ;use tar to create (c) an archive of                                  the directory /var and put it on                                  tape /dev/rmt/0m. #  tar tvf /dev/rmt/0m  ;obtain table of contents (t) from                                   tape /dev/rmt/0m and produce                                   produce verbose (v) output. #  tar xvf /dev/rmt/0m  ;extract (x) the entire contents                                    of the archive on tape /dev/rmt/0m                                   to default destination. #  tar xvf /dev/rmt/0m file1  ;extract (x) only file1                                    from the archive on tape /dev/rmt/0m                                    to default destination. 

You'll notice when you view the man pages for tar that options are preceded by a hyphen. The command works without the hyphen so most tar examples, including those in this chapter, omit the hyphen.

Let's take a look at some examples using tar . Let's begin by performing a tar backup (usually called creating an archive ) of the directory /var to tape device /dev/rmt/0m . We use the c option to create a backup and the f option to specify the file of the tape drive /dev/rmt/0m :

 #  tar cf /dev/rmt/0m /var  tar: /var/opt/dce/rpc/local/01060/reaper is not a file. Not dumped tar: /var/opt/dce/rpc/local/00997/reaper is not a file. Not dumped tar: /var/opt/dce/rpc/local/00997/c-3/7000 is not a file. Not dumped tar: /var/opt/dce/rpc/local/00997/c-3/shared is not a file. Not dumped tar: /var/opt/dce/rpc/local/00997/c-3/7002 is not a file. Not dumped tar: /var/opt/dce/rpc/local/s-0/135 is not a file. Not dumped tar: /var/opt/dce/rpc/local/s-0/2121 is not a file. Not dumped tar: /var/opt/dce/rpc/local/s-3/135 is not a file. Not dumped tar: /var/opt/dce/rpc/local/s-3/2121 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client933 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client1028 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client1152 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client1172 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client1173 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client1139 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client2500 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client2592 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client2490 is not a file. Not dumped tar: /var/spool/sockets/pwgr/client2593 is not a file. Not dumped tar: /var/spool/pwgr/daemon is not a file. Not dumped # 

The result of this command printed only problem- related messages to standard output . You will often see the v option used with tar to produce verbose output, which would have listed both the messages above and those related to files that were successfully written to the tape archive.

Next let's take a look at only the files on the tape with the string eaaa in them. To produce a table of contents, we will use the t option. The following example also uses v for verbose output:

 #  tar tvf /dev/rmt/0m  grep eaaa  rw-rw-rw-   0/3     28 Jul 11 15:37 2000 /var/tmp/eaaa01299 rw-rw-rw-   0/3     28 Jul 11 15:37 2000 /var/tmp/eaaa01333 rw-rw-rw-   0/3     28 Jul 11 15:38 2000 /var/tmp/eaaa01354 rw-rw-rw-   0/3     28 Jul 11 15:40 2000 /var/tmp/eaaa01380 rw-rw-rw-   0/3     28 Jul 11 15:40 2000 /var/tmp/eaaa01405 rw-rw-rw-   0/3     28 Jul 11 15:45 2000 /var/tmp/eaaa01487 # 

This output shows several files that begin with eaaa on the tape. We'll delete the last of these files from the computer and restore it from tape using the x option to extract the file from the tar archive. We'll then list the directory on the system to confirm that the file we deleted has been restored to the directory from tape.

 #  rm /var/tmp/eaaa01487  # #  tar xvf /dev/rmt/0m /var/tmp/eaaa01487  x /var/tmp/eaaa01487, 28 bytes, 1 tape blocks # #  ls -l /var/tmp/eaaa*  -rw-rw-rw-   1 root     sys           28 Jul 11 15:37 /var/tmp/eaaa01299 -rw-rw-rw-   1 root     sys           28 Jul 11 15:37 /var/tmp/eaaa01333 -rw-rw-rw-   1 root     sys           28 Jul 11 15:38 /var/tmp/eaaa01354 -rw-rw-rw-   1 root     sys           28 Jul 11 15:40 /var/tmp/eaaa01380 -rw-rw-rw-   1 root     sys           28 Jul 11 15:40 /var/tmp/eaaa01405 -rw-rw-rw-   1 root     sys           28 Jul 11 15:45 /var/tmp/eaaa01487 # 

This backup and restore using tar is simple and gets the job done.

A common use for tar is to back up files from one directory and restore them to another directory. We'll backup the contents of /var/tmp and restore them to the directory /tmp/puttarfileshere . In the following example, we create a tar backup archive to a file rather than to tape. The file is called tartest . We then move this file to the destination directory and extract it there. We don't use a tape at all in this example.

 #  cd /var/tmp  #  ls -l  total 72 -rw-------   1 root       sys              0 Jul 11 15:57 OBAMFEAa01630 -rw-------   1 root       sys              0 Jul 11 15:20 OBAMHBAa01020 -rw-------   1 root       sys              0 Jul 11 15:50 OBAMHBAa01540 -rw-rw-rw-   1 root       sys            102 Jul 11 15:20 aaaa01112 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01299 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01333 -rw-rw-rw-   1 root       sys            102 Jul 11 15:38 aaaa01354 -rw-rw-rw-   1 root       sys            102 Jul 11 15:40 aaaa01380 -rw-rw-rw-   1 root       sys             99 Jul 11 15:40 aaaa01405  .   .   .  1 root       sys             28 Jul 11 15:37 eaaa01333 -rw-rw-rw-   1 root       sys             28 Jul 11 15:38 eaaa01354 -rw-rw-rw-   1 root       sys             28 Jul 11 15:40 eaaa01380 -rw-rw-rw-   1 root       sys             28 Jul 11 15:40 eaaa01405 -rw-rw-rw-   1 root       sys             28 Jul 11 15:45 eaaa01487 -rwxr--r--   1 root       root            28 Jul 11 16:04 envd.action2 -rwxr--r--   1 root       root            28 Jul 11 16:04 envd.action5 dr-xr-xr-x   2 bin        bin             96 Jul 11 13:50 ntp -rw-r--r--   1 root       sys            600 Jul 11 15:27 swagent.log # #  tar cvf /tmp/tartest 'ls'  a OBAMFEAa01630 0 blocks a OBAMHBAa01020 0 blocks a OBAMHBAa01540 0 blocks a aaaa01112 1 blocks a aaaa01299 1 blocks a aaaa01333 1 blocks a aaaa01354 1 blocks a aaaa01380 1 blocks a aaaa01405 1 blocks  .   .   .  a eaaa01354 1 blocks a eaaa01380 1 blocks a eaaa01405 1 blocks a eaaa01487 1 blocks a envd.action2 1 blocks a envd.action5 1 blocks a swagent.log 2 blocks # #  cd /tmp  #  mkdir puttarfileshere  #  cp tartest puttarfileshere  #  cd puttarfileshere  #  ls -l  total 80 -rw-rw-rw-   1 root       sys          40960 Jul 11 17:09 tartest # #  tar xvf tartest  x OBAMFEAa01630, 0 bytes, 0 tape blocks x OBAMHBAa01020, 0 bytes, 0 tape blocks x OBAMHBAa01540, 0 bytes, 0 tape blocks x aaaa01112, 102 bytes, 1 tape blocks x aaaa01299, 102 bytes, 1 tape blocks x aaaa01333, 102 bytes, 1 tape blocks x aaaa01354, 102 bytes, 1 tape blocks x aaaa01380, 102 bytes, 1 tape blocks x aaaa01405, 99 bytes, 1 tape blocks  .   .   .  x daaa01405, 28 bytes, 1 tape blocks x daaa01487, 28 bytes, 1 tape blocks x eaaa01299, 28 bytes, 1 tape blocks x eaaa01333, 28 bytes, 1 tape blocks x eaaa01354, 28 bytes, 1 tape blocks x eaaa01380, 28 bytes, 1 tape blocks x eaaa01405, 28 bytes, 1 tape blocks x eaaa01487, 28 bytes, 1 tape blocks x envd.action2, 28 bytes, 1 tape blocks x envd.action5, 28 bytes, 1 tape blocks x swagent.log, 600 bytes, 2 tape blocks # 

When creating the tar backup, I first changed to the /var/tmp directory and then used the ls command (a grav or accent , which is near the upper left of most keyboards on the same key as a tilde ; appears before and after the ls ). This produced relative path names that I could easily restore to the /tmp/puttarfileshere directory. Alternatively, I could simply have changed directory to /var and issued the command tar cf /dev/rmt/0m tmp to back up the entire contents of the /var/tmp directory.

This entire process could have been done on a single command line. The following line is from the tar file man page and shows the procedure for producing an archive in the fromdir and restoring it to the todir :


#   cd   fromdir  ;   tar  cf  -  .    (  cd   todir  ;   tar  xf  -i  )

The "-" in the tar cf command tells tar to send its data to standard output . The "-" in the tar xf command tells tar to look to standard input for data, which is the data produced by tar cf - issued earlier on the command line.

cpio

cpio is a powerful utility that is used in conjunction with find (see Chapter 25 dedicated to find ) in order to perform full and incremental backups. cpio is an established UNIX utility that works similarly on most UNIX variants.

We'll use several commands in the upcoming examples, including the following:

 #  find . -print  cpio -oBv > /dev/rmt/0m  ;find the contents of                                             the current dir and                                             write them to tape. #  cpio -it < /dev/rmt/0m  ;read table of contents (t) of tape. #  cpio -icvBdum < /dev/rmt/0m  ;restore (i) the contents of tape,                                 this is the most widely used                                  cpio command. #  find . -print  cpio -oBv  (remsh tapesys dd of=/dev/rmt/0m)  ;find the contents of the current dir and            write (o) them to tape on remote machine  tapesys  . #  remsh tapesys "dd if=/dev/rmt/0m bs=8k"  cpio -icvBdum  ;restore the contents (i) of a tape on remote system  tapesys  to the local system. 

The first command we'll issue is to find the contents in /var/tmp and write them to our tape device /dev/rmt/0m . The options to cpio used in the following example are o for output mode, B for block output, and v for verbose reporting:

 #  cd /var/tmp  #  find . -print  cpio -oBv > /dev/rmt/0m  (Using tape drive with immediate report mode enabled (reel #1).) . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 3570 blocks # 

In the example, we first changed directory to /var/tmp , then issue the find command and pipe its output to cpio . cpio is almost always used in conjunction with find in the manner shown in the example. This produced a backup with relative path names because we changed to the directory /var/tmp before issuing the backup commands.

Next we'll view the contents of the tape to see the files we wrote to it with cpio. The i option is used for input, and the t option is used to get a table of contents in the following listing:

 #  cpio -it < /dev/rmt/0m  . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 3570 blocks # 

Now that we have written to the tape and viewed its table of contents, we'll restore the contents of /var/tmp . In the following example, we use several options to cpio , including i for input mode, c for ASCII header format, v for verbose, B for block output, d for directories, u for unconditional write over existing files, and m to restore the original modification times:

 #  cpio -icvBdum < /dev/rmt/0m  . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 3570 blocks # 

The cpio command produces a list of files that will be read from the tape and restored to the system. Since we included the verbose option, we'll see all the information related to the restore.

Now that we've seen how to write a tape, produce a table of contents, and read the contents of a tape on a local system, let's work with a tape drive on a remote system. We'll perform a backup to a remote tape drive, view the table of contents on the tape, and then restore using the remote tape drive.

First let's perform a backup to a remote tape drive. The local system, which does not have a tape drive attached to it, is or1. The remote system, which has a tape drive attached to it, is tapesys . We'll run cpio (using the same three options earlier described) on or1 and run a remote shell and dd on tapesys, which will store the contents of the backup. We'll run these commands from /var/tmp on or1 in the following example:

 #  find . -print  cpio -oBv  (remsh tapesys dd of=/dev/rmt/0m)  . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 3570 blocks # 

Now let's come back to our local system without the tape drive and restore the contents of the cpio tape we just produced, but let's restore them to a different directory. The directory to which we'll restore the contents of the tape (originally in /var/tmp ) is /tmp/remotecpiofiles . This is similar to the process we performed in the tar section earlier in this chapter in which we restored tar files to a different location.

In the following example, we issue a series of commands while on or1 . The last of these commands is to issue a remsh to system tapesys which has on it a tape drive with the cpio tape we just created. We dd the information and pipe it through cpio to restore the contents of the tape. In this example, we use the same restore options to cpio , including i for input mode, c for ASCII header format, v for verbose, B for block output, d for directories, u for unconditional write over existing files, and m to restore original modification times:

 #  hostname  or1 #  cd /tmp  #  mkdir remotecpiofiles  #  cd remotecpiofiles  #  pwd  /tmp/remotecpiofiles #  remsh tapesys "dd if=/dev/rmt/0m bs=8k"  cpio -icvBdum  . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 3570 blocks # #  pwd   /tmp/remotecpiofiles  #  ls  envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558 aaaa01426 aaaa01112 OBAMHBAa01540 aaaa01299  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 exclude.temp arch.include.1 # 

The ls we issued at the end of this example confirmed that we did indeed write the contents of the tape on the remote system to the new directory /tmp/remotecpiofiles . You may want to add the -a command to the ls option to ensure that the files have contents.

You can build from the simple examples in this cpio section to develop backup and restore commands to meet your needs in a modest environment.

fbackup and frecover

fbackup and frecover are the preferred backup and restore programs on HP-UX. Backups produced with fbackup are not portable to other UNIX variants. If you're working in a heterogeneous environment, you won't be able to take fbackup tapes produced on an HP-UX system and recover them to a system running a different UNIX variant.

In this section I'll cover issuing fbackup and frecover at the command line. Although fbackup and frecover are the most advanced programs bundled with your HP-UX system for backup and restore, your needs may go beyond these programs. There are also advanced backup programs you can procure from both HP and third parties. In general, I find that the capabilities of fbackup and frecover are sufficient for new HP-UX installations. If, however, you have a highly distributed environment or need to back up large amounts of data, perform backups on systems with a variety of operating systems, or need to use several backup devices simultaneously , you may want to consider a more advanced product.

fbackup has the capability of performing backups at different levels . The levels define the amount of information to be included in the backup. A full backup, which is covered in this section, is backup level 0. The other levels define various degrees of incremental backups. I am a strong advocate of performing a full backup, and then performing incremental backups of every file that has changed since the last full backup . This means that to recover from a completely "hosed" (a technical term meaning destroyed ) system, you would need your full backup tape and only one incremental tape (you would restore your root volume with a bootable Ignite-UX tape produced with make_tape_recovery , which is covered in Chapter 9). If, for instance, you performed a full backup on Sunday and an incremental backups on Monday through Friday, you would need to load only Sunday's full backup tape and Friday's incremental backup tape to completely restore your system. fbackup supports this scheme.

Here is an explanation of the fbackup command and some of its options:

 /usr/sbin/fbackup -f device [-0-9] [-u] [-i path] [-e path] [-g graph] 

-f device

The tape drive for the backup, such as / dev/rmt/0m for your local tape drive.

[-0-9]

This is the level of the backup. If you run a full backup on Sunday at level 0, then you would run an incremental backup at level 1 the other days of the week. An incremental backup will back up all information changed since a backup was made at a lower level. You could back up at 0 on Sunday, 1 on Monday, 2 on Tuesday, and so on. However, to recover your system, you would need to load Sunday's tape, then Monday's tape, then Tuesday's tape, and so on, to fully recover.

[-u]

This updates the database of past backups so that it contains such information as the backup level, time of the beginning and end of the backup session, and the graph file (described below) used for the backup session. This is valid only with the -g (graph) option.

[-i path]

The specified path is to be included in the backup. This can be issued any number of times.

[-e path]

The specified path is to be excluded from the backup. This can also be specified any number of times.

[-g graph]

The graph file contains the list of files and directories to be included or excluded from the backup.

Although fbackup is quite thorough and easy to use, it does not have embedded in it the day and time at which full and incremental backups will be run. You have to make a cron entry to run fbackup automatically.

In its simplest form, we could run fbackup and specify only the tape drive with the f option and the directory to back up with the i option as shown in the following example:

 #  fbackup -f /dev/rmt/0m -i /var/tmp  fbackup(1004): session begins on Wed Jul 12 14:26:30 2000 fbackup(3205): WARNING: unable to read a volume header fbackup(3024): writing volume 1 to the output file /dev/rmt/0m fbackup(3055): total file blocks read for backup: 3606 fbackup(3056): total blocks written to output file /dev/rmt/0m: 3857 fbackup(1030): warnings encountered during backup # 

fbackup did not produce a list of files included in the backup since we did not include the v option for verbose.

To view the contents of the tape, we run frecover with the options r for read, N to prevent the contents of the tape from being restored to the system, and v for verbose, as shown in the following command:

 #  frecover -rNv -f /dev/rmt/0m  drwxr-xr-x      root    root    / dr-xr-xr-x      bin     bin     /var drwxrwxrwx      bin     bin     /var/tmp -rw-------      root    sys     /var/tmp/OBAMFEAa01630 -rw-------      root    sys     /var/tmp/OBAMHBAa01020 -rw-------      root    sys     /var/tmp/OBAMHBAa01540 -rw-------      root    sys     /var/tmp/OBAMHBAa07762 -rw-rw-rw-      root    sys     /var/tmp/aaaa01112  .   .   .  -rw-rw-rw-      root    sys     /var/tmp/eaaa01487 -rwxr--r--      root    root    /var/tmp/envd.action2 -rwxr--r--      root    root    /var/tmp/envd.action5 -rw-rw-rw-      root    sys     /var/tmp/exclude.temp dr-xr-xr-x      bin     bin     /var/tmp/ntp -rw-r--r--      root    sys     /var/tmp/swagent.log -rw-rw-rw-      root    sys     /var/tmp/tmp_cfg_file # 

Let's now delete a file from the system that was included as part of the fbackup . We'll then restore only the file we deleted. We'll use the x option for extract and the i option to specify the file to include with frecover , as shown in the following example:

 #  cd /var/tmp  #  ls -l aa*  -rw-rw-rw-   1 root       sys            102 Jul 11 15:20 aaaa01112 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01299 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01333 -rw-rw-rw-   1 root       sys            102 Jul 11 15:38 aaaa01354 -rw-rw-rw-   1 root       sys            102 Jul 11 15:40 aaaa01380 -rw-rw-rw-   1 root       sys             99 Jul 11 15:40 aaaa01405 -rw-rw-rw-   1 root       sys            102 Jul 11 14:57 aaaa01426 -rw-rw-rw-   1 root       sys             99 Jul 11 15:45 aaaa01487 -rw-rw-rw-   1 root       sys            102 Jul 11 14:24 aaaa01558 #  rm aaaa01487  #  cd /  #  frecover -x -i /var/tmp/aaaa01487 -f /dev/rmt/0m  #  cd /var/tmp  #  ls -l aaa*  -rw-rw-rw-   1 root       sys            102 Jul 11 15:20 aaaa01112 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01299 -rw-rw-rw-   1 root       sys            102 Jul 11 15:37 aaaa01333 -rw-rw-rw-   1 root       sys            102 Jul 11 15:38 aaaa01354 -rw-rw-rw-   1 root       sys            102 Jul 11 15:40 aaaa01380 -rw-rw-rw-   1 root       sys             99 Jul 11 15:40 aaaa01405 -rw-rw-rw-   1 root       sys            102 Jul 11 14:57 aaaa01426 -rw-rw-rw-   1 root       sys             99 Jul 11 15:45 aaaa01487 -rw-rw-rw-   1 root       sys            102 Jul 11 14:24 aaaa01558 # 

In the previous example, we successfully restored the file /var/tmp/aaa01487 from the tape using f restore .

There are some powerful aspects to fbackup that we did not employ in our example. These include backup levels, graph files , and index files .

fbackup supports backup levels 0-9. 0 is used for full backups and the other digits indicate various incremental backup levels (see the fbackup man page at the end of this chapter for additional information).

Graph files are used to specify the files to be included in the backup.

Index files contain a list of files produced as part of the backup.

Let's take a look at an example that employs all of these functions. First, we create a graph file that contains the files we wish to include ( i ) or exclude ( e ) as part of the backup. In our case the file will contain only the following line:

 i /var/tmp 

Let's now run fbackup with u to update the backup database, for a full backup, f to specify the file to which we want to write the backup (we'll use a file rather than tape in this example), g to specify our graph file, I to specify the name of the index file, and finally, we'll redirect messages to a file that will contain the backup log. We'll add the date and time to the end of the index and backup log files.

 #  fbackup -0u -f /tmp/testbackup -g /tmp/backupgraph   -I /tmp/backupindex.`date '+%y%m%d.%H:%M'` 2>   /tmp/backuplog.`date '+%y%m%d.%H:%M'`  # 

Let's now see what files were produced as a result of having issued this command. First let's look at the backup index and backup log files:

 #  ls /tmp/backup*  backupgraph backupgraph000712.15.04 backupindex.000712.15:04 backuplog.000712.15:04 # #  cat /tmp/backupindex000712.15:04  1024                   1 / 1024                   1 /var 2048                   1 /var/tmp 0                      1 /var/tmp/OBAMFEAa01630 0                      1 /var/tmp/OBAMHBAa01020 0                      1 /var/tmp/OBAMHBAa01540 336                    1 /var/tmp/OBAMHBAa07762 102                    1 /var/tmp/aaaa01112  .   .   .  28                     1 /var/tmp/eaaa01487 28                     1 /var/tmp/envd.action2 28                     1 /var/tmp/envd.action5 4608                   1 /var/tmp/exclude.temp 96                     1 /var/tmp/ntp 1595                   1 /var/tmp/swagent.log 205                    1 /var/tmp/tmp_cfg_file # #  cat /tmp/backupgraph000712.15:04  i/var/tmp # #  cat /tmp/backuplog000712.15:04  fbackup(1004): session begins on Wed Jul 12 14:56:19 2000 fbackup(3024): writing volume 1 to the output file /tmp/testbackup fbackup(1030): warnings encountered during backup fbackup(3055): total file blocks read for backup: 3614 fbackup(3056): total blocks written to output file /tmp/testbackup:3876 # 

The three files with the date appended ( 7/12/00 time 15:04 ) to the end of the filename were produced by the fbackup command issued earlier. The date appended to the end of the file can help in the organization of backup files. We could restore any or all of these files with frestore from the file that contains the backup information ( /tmp/testbackup ) as demonstrated earlier.

We are not restricted to performing backups to a tape drive attached to the local system. We can backup to a remote tape with fbackup by specifying the system name and tape drive, or file, to which we want to store the files. The following example uses fbackup options covered earlier and also includes the name of the system with the tape drive:

 #  fbackup -f tapesys:/dev/rmt/0m -i /var/tmp -v  fbackup(1004): session begins on Wed Jul 12 15:56:22 2000 fbackup(3307): volume 1 has been used -1 time(s) (maximum: 100) fbackup(3024): writing vol 1 to output file tapesys:/dev/rmt/0m     1: / 2     2: /var 2     3: /var/tmp 4     4: /var/tmp/AAAa11812 0     5: /var/tmp/AAAa11992 0     6: /var/tmp/BEQ19522 19     7: /var/tmp/DCE19522 0     8: /var/tmp/DEC19522 0     9: /var/tmp/ISPX19522 0  .   .   .  73: /var/tmp/eaaa13306 1    74: /var/tmp/ems_inittab.old 2    75: /var/tmp/envd.action2 1    76: /var/tmp/envd.action5 1    77: /var/tmp/inetd.conf.old 9    78: /var/tmp/net19522 1799    79: /var/tmp/swagent.log 16 fbackup(1005): run time: 43 seconds fbackup(3055): total file blocks read for backup: 1974 fbackup(3056): total blocks written to output file or1:/dev/rmt/0m: 0 # 

This command performs the backup of /var/tmp on system or1 by sending the files to the tape drive on system tapesys . We could have used many additional options to fbackup as demonstrated in earlier examples, but I wanted to keep the example simple so it would be easy to see the remote tape drive specification.

dd

dd is a utility for writing the contents of a device, such as a disk, to tape. You can also use dd to copy an image of a tape to a file on your system, and then you can look at the file.

First, let's write the contents of a directory to tape using tar , then we'll use dd to copy the tape contents as a file. The only option to dd required in this example is if, which specifies the input file as the tape drive.

 #  cd /var/tmp  #  tar cf /dev/rmt/0m `ls`  #  cd /tmp  #  dd if=/dev/rmt/0m > /tmp/tapecontents  183+0 records in 183+0 records out # tar tv /tmp/tapecontents rw-------   0/3      0 Jul 11 15:57 2000 OBAMFEAa01630 rw-------   0/3      0 Jul 11 15:20 2000 OBAMHBAa01020 rw-------   0/3      0 Jul 11 15:50 2000 OBAMHBAa01540 rw-------   0/3    336 Jul 12 13:18 2000 OBAMHBAa07762 rw-------   0/3      0 Jul 12 13:44 2000 OBAMHBAa08333 rw-rw-rw-   0/3    102 Jul 11 15:20 2000 aaaa01112  .   .   .  rw-rw-rw-   0/3     28 Jul 11 15:45 2000 eaaa01487 rwxr--r--   0/0     28 Jul 11 21:53 2000 envd.action2 rwxr--r--   0/0     28 Jul 11 21:53 2000 envd.action5 rw-rw-rw-   0/3   2304 Jul 12 12:42 2000 exclude.temp r-xr-xr-x   2/2      0 Jul 11 13:50 2000 ntp/ rw-r--r--   0/3   1595 Jul 12 12:23 2000 swagent.log rw-rw-rw-   0/3    205 Jul 12 12:39 2000 tmp_cfg_file # 

Now we can look at the contents of the file with tar as shown in an earlier section, with the following command:

 #  tar tv /tmp/tapecontents  

Another common use of dd is to extract a cpio archive from a tape drive on a remote system to a local system. In the following example the local system without a tape drive is or1, and the remote system with a tape drive is tapesys . We'll read the tape to a directory on or1 using dd and cpio (see the earlier cpio section for an explanation of the options) in the following example:

 #  hostname  or1 #  pwd  /tmp/remotecpiofiles #  remsh tapesys "dd if=/dev/rmt/0m bs=8k"  cpio -icvBdum  . envd.action2 envd.action5 swagent.log ntp OBAMHBAa01020 aaaa01558  .   .   .  eaaa01487 OBAMFEAa01630 cmd_res8215 tmp_cfg_file cmd_res8708 OBAMHBAa07762 exclude.temp arch.include.1 3580 blocks 0+358 records in 0+358 records out # 

This command runs a remote shell ( remsh ) to run the dd command on tapesys . The output of this command is piped to cpio on our local system to extract the archive. In this example, only the if option was used to specify the input file. The of option, which specifies the output file was not needed. If you were to perform a dd of a disk device to a tape drive, the of would be the tape drive on your system, such as /dev/rmt/0m .

dump and restore

dump is similar to fbackup . If you use fbackup on HP-UX, you will see much similarity when you use dump . dump provides levels as part of the backup scheme and creates /var/adm/dumpdates, which lists the last time a filesystem was backed up. restore is used to read information backed up with dump . dump , however, works only with HFS file systems, not with VxFS, and it assumes that you are using a reel tape. vxdump and vxrestore are used for VxFS. Generally speaking, you will not find dump (and vxdump ) and restore (and vxrestore ) recommended as backup and restore programs on HP-UX. fbackup and cpio are the preferred backup programs on HP-UX. There is, however, no reason why you can't use dump and restore as long as you keep in mind the file system type limitation.

Let's take a look at some examples using dump and restore . Our examples will actually use vxdump and vxrestore ; however. Nearly the same usage applies to both the HFS and VxFS programs. We'll use several commands in the upcoming examples, including the following:

 #  vxdump 0fu /dev/rmt/0m /var  ;dump vxfs file system /var to tape                                    /dev/rmt/0m using level 0 and                                     update /var/adm/dumpdates. #  vxrestore tf /dev/rmt/0m  grep eaaa  ;obtain table of contents from                                          tape /dev/rmt/0m and look for                                          file name containing "eaaa" #  vxrestore -x -f /dev/rmt/0m ./tmp/eaaa01487  ;restore file to                                                    current directory 

Let's take a look at some of these commands in more detail and I'll provide more explanation for what is taking place.

Our first example runs vxdump to back up the directory /var with a backup level of for full backup, the f option to specify the output file /dev/rmt/0m , and u for a write to /var/adm/dumpdates :

 #  vxdump 0fu /dev/rmt/0m /var  vxdump: Date of this level 0 dump: Tue Jul 11 16:41:27 2000   vxdump: Date of last level 0 dump: the epoch   vxdump: Dumping /dev/vg00/rlvol10 to /dev/rmt/0m   vxdump: mapping (Pass I) [regular files]   vxdump: mapping (Pass II) [directories]   vxdump: estimated 428058 blocks (209.01MB).   vxdump: dumping (Pass III) [directories]   vxdump: dumping (Pass IV) [regular files]   vxdump: vxdump: 214146 tape blocks on 1 volumes(s)   vxdump: level 0 dump on Tue Jul 11 16:41:27 2000   vxdump: Closing /dev/rmt/0m   vxdump: vxdump is done # 

vxdump provides information related to the backup to standard output .

Next, let's view the table of contents on the tape using vxrestore , looking for files that begin with eaaa . We'll then delete one of these files from the system and use vxrestore to restore it from tape. To produce the table of contents, we use the t option, and to extract the file from tape, we use the x option to vxrestore as shown in the following listing:

 # #  vxrestore tf /dev/rmt/0m  grep eaaa  404      ./tmp/eaaa01299        678      ./tmp/eaaa01333        700      ./tmp/eaaa01354        736      ./tmp/eaaa01380        741      ./tmp/eaaa01405        717      ./tmp/eaaa01487 # # #  rm /var/tmp/eaaa01487  # #  vxrestore -x -f /dev/rmt/0m ./tmp/eaaa01487  You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 set owner/mode for '.'? [yn] y #  cd /var/tmp  #  ls -l eaaa01487  total 2 -rw-rw-rw-   1 root       sys             28 Jul 11 15:45 eaaa01487 # 

Notice that as part of restoring the file, we had to specify a volume number of 1 and whether or not we wanted to set the mode for the file.

The examples in this section showed creating a backup tape with vxdump , producing a table of contents, and restoring with vxrestore . Although fbackup and cpio are the recommended backup solutions on HP-UX, you can use dump and restore if you are familiar with these programs and would like to use them. Due to the portability of tar , it is often used for backup and restore as well.



HP-UX 11i Systems Administration Handbook and Toolkit
HP-UX 11i Systems Administration Handbook and Toolkit (2nd Edition)
ISBN: 0131018833
EAN: 2147483647
Year: 2003
Pages: 301

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net