The restore command is used to retrieve files from a backup tape or other medium that was created by dump . You can use restore to recover an entire file system or to interactively select individual files. It recovers files from the specified media and copies them into the current directory (the one you ran the recover command in), re-creating subdirectories as needed. Much as with the dump command, the first parameter passed to the restore command is a list of single character option codes, as shown in Table 13-5.
Restore Options | Description |
---|---|
-r | Restore the entire dump archive. |
-C | Compare the contents of the dump file with the files on the disk. This is used to check the success of a restore. |
-R | Start the restore from a particular tape of a multitape backup. This is useful for restarting an interrupted restore. |
-X filelist | Extract only specific files or directories from the archive. This option takes one argument, a list of files or directories to extract. |
-T file | List the contents of the dump archive. If a file or directory is given as an argument, list only the occurrence of that file, directory, or anything within the directory. |
-i | Restore files in interactive mode. |
-b blocksize | Specify the block size of the dump in kilobytes. This option takes a numeric argument. |
-D filesystem | Specify the name of the file system to be compared when using the - C option. The file system name is passed as an argument. |
-F script | Specify the name of the dump archive to restore from. This option takes an alphanumeric argument. |
-h | If this option is specified, restore re-creates directories marked for extraction but will not extract their contents. |
-m | Files are extracted by inode number instead of name. This is generally not very useful. |
-N | Instead of extracting files, print their names . |
-s file# | Specify the dump file to start with on a multiple file tape. This takes a numeric argument. |
-T directory | Tells restore where to write any temporary files. This is useful if you booted from a floppy disk (which has no space for temporary files). |
-v | Run in verbose mode. This causes restore to print information about each file as it restores it. |
-y | The restore command will always continue when it encounters a bad block, rather than asking you if you want to continue. |
Let's return to our earlier example of the Friday disk crash. You installed a shiny new hard drive and your backup tapes are in hand. It is time to restore the files. For the purpose of this example, I assume that the crashed drive contained only the /home partition and that the Linux operating system is still intact. If the crashed drive had contained the Linux operating system, you would first have to reinstall Linux before restoring the backup.
Before any files can be recovered to your new hard drive, an empty file system must be created on it. You use the mkfs command to do this. The mkfs command can accept a variety of parameters, but usually you only need to supply the name of the device to create the file system on. Thus, to prepare the new hard drive, type:
# mkfs -t ext3 /dev/hda6
Alternatively, because your /home drive is listed in the /etc/fstab file, you can simply specify the /home mount point and mkfs will figure out the correct device. Thus, the preceding command could be replaced with this:
# mkfs /home
Caution | You should, of course, exercise extreme caution when using the mkfs command. If you specify the wrong device name, you could unintentionally wipe out all data on an existing file system. |
After creating a file system on your new disk, mount the partition to a temporary mount point.
# mkdir /mnt/test # mount /dev/hda6 /mnt/test
This connects the new file system to the /mnt/test directory. Now change into the directory ( cd /mnt/test ) and use the restore command to recover the entire file system off of your backup tape. Of course, it is assumed that you have loaded the tape into the tape drive.
# cd /mnt/test # restore rf /dev/nrft0
When the restore is finished, you can unmount the partition and remount it to the appropriate mount point. If you have restored the file system to a different physical partition than it was originally on, be sure to modify the /etc/fstab file appropriately so that the correct partition is mounted next time the system is rebooted.
The restore command can also be used to recover individual files and directories. By using restore in interactive mode, you can type a series of restore commands to selectively restore files. To run restore in interactive mode, use the i parameter instead of r :
# restore if /dev/nrst0
The restore command will then read the file index from the backup tape and present you with a restore prompt. At this prompt, you can type the commands that enable you to select which directories and files to recover. You can navigate the directory structure of the backup index much the same way that you navigate an actual file system using a shell prompt. The interactive restore command even has its own version of the familiar cd and ls commands, as shown in Table 13-6.
Command | Description |
---|---|
add | Add a file or directory to the list of files to be extracted. If a directory is marked for extraction, all of the directories and files within it will also be extracted. |
cd | Change the current directory being viewed within the dump archive. Works similar to the cd command used at a shell prompt. |
delete | Delete a file or directory from the list of files to be extracted. Deleting a directory from the list results in all of the files and directories within it also being deleted from the list of files to be extracted. |
extract | Extract all of the marked files and directories from the archive and write them back to the file system. |
help | List the available commands. |
ls | List the contents of the current directory. If a directory name is provided as an argument, list the contents of that directory. Files or directories marked for extraction have a * character in front of them. |
pwd | Print the full path name of the current directory of the dump archive. |
quit | Exit the interactive restore program. |
setmodes | Do not restore the files; instead, set the modes of already existing files on the target disk to match the modes recorded in the dump file. This is useful for recovering from a restore that was prematurely aborted. |
verbose | Toggles verbose output versus quiet output during the restore process. Verbose output mode will echo information to the screen for every file that is restored. |
As an example, pretend that the user joe has accidentally deleted his Mail subdirectory from his home directory. Joe happens to be your boss, so it is urgent that you recover his files. Here is how you may go about it.
Load the appropriate tape into the tape drive and log in as root. Use the cd command to go to the top of the /home partition, and then run the restore program in interactive mode:
# cd /home # restore if /dev/nrft0
Verify that you have the backup tape for the /home partition by entering the ls command. You should see something like the following list of directories, representing users who have home directories in /home :
restore > ls .: bob/ jane/ joe/ lost+found/ mary/ thad/
Yes, this is the home partition. Now change the current directory to Joe's home directory using the cd command. Type ls again to view the contents of his home directory.
restore > cd joe restore > ls ./joe: .mozilla/ Desktop/ report.html .tcshrc Mail/ letter.txt .xinitrc News/ www/
Now mark the Mail directory for extraction using the add command:
restore > add Mail
If you use the ls command again, you see that the Mail directory is preceded with an asterisk ( * ) character, which means it has been marked for extraction.
restore > ls ./joe: .mozilla/ Desktop/ report.html .tcshrc *Mail/ letter.txt .xinitrc News/ www/
Now use the extract command to begin the extraction process. restore will prompt you for the number of the tape to start with. This is a single tape backup, so just enter the number 1 . When it prompts you to set owner/mode for '.'? , answer yes by typing y and pressing Enter. restore will then restore the file permissions (if necessary) of the directory it is restoring to. This isn't critical when extracting individual files like this, but you should always answer yes to this prompt when doing a full restore. Anyway, your screen should now contain the following:
restore > extract 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 toward the first. Specify next volume #: 1 set owner/mode for '.'? [yn] y restore >
At this point, the files have been recovered and you can exit the restore program by issuing the quit command. That's all there is to it. You now know the basics of using the dump and restore commands.