Things you need to know:
The tapes that have the files to be restored
The path name of the files to be restored
Ask the user the approximate date the files to be recovered were last modified.
Refer to your backup plan to find the date of the last backup that would have the file or file system on it.
To retrieve the most recent version of a file, work backward through the incremental backups from highest to lowest level and most recent to least recent, unless the user requests otherwise.
If you have online archive files, use the ufsrestore command to identify correct media.
# ufsrestore ta archive-name ./path/filename ./path/filename |
t |
List each file that appears on the tape. |
a |
Reads the table of contents from the online archive file instead of the tape. |
archive-name |
Identifies the online archive file name. |
./path/filename |
Identifies the file name(s) you are looking for on the online archive. If successful, ufsrestore prints out the inode number and file name. If unsuccessful, ufsrestore prints an error message. |
Insert the media containing the backups in the drive and use the ufsrestore command to verify the correct media.
# ufsrestore tf device-name ./path/filename ./path/filename |
Be sure to use the complete path for the filename(s). If a file is in the backup, its name and inode number is listed. Otherwise, a message says it is not on the volume.
If you have multiple dump files on the same tape, use the s /dev/rmt/n option to position the tape at the dump you want to use.
# ufsrestore tfs /dev/rmt/n tape_number |
If you use ufsdump to dump the /usr file system, the table of contents lists only the files and directories under /usr. The following example checks if /usr/bin/pwd is in the online archive.
# ufsrestore ta archive-name ./bin/pwd |
The following example checks if /usr/bin/pwd is on the backup tape.
# ufsrestore tf /dev/rmt/n ./bin/pwd |
Become superuser.
Write-protect the tape.
Insert the volume 1 tape into the tape drive.
Change to a directory that will be used to restore the files temporarily.
# cd /var/tmp |
To avoid conflicts with other users, you might want to create and change to a subdirectory, such as /var/tmp/restore, in which to restore the files.
If you are restoring a hierarchy, you should restore the files in a temporary directory on the same file system where the files will reside, so you can use the mv command to move the entire hierarchy where it belongs after it is restored.
Use the ufsrestore command to start the interactive restoration.
Some informational messages and the ufsrestore> prompt are displayed.
# ufsrestore if /dev/rmt/n |
Create a list of files to be restored.
List the contents of a directory.
ufsrestore> ls directory |
Change to a directory.
ufsrestore> cd directory-name |
Create a list of files and directories you want to restore.
ufsrestore> add filename filename |
(Optional) If you need to remove a directory or file name from the list of files to be restored, use the delete command.
ufsrestore> delete filename |
(Optional) Turn on verbose mode to display the file names as they are being restored.
ufsrestore> verbose |
Use the extract command after the list is complete.
ufsrestore> extract |
The ufsrestore command asks you which volume number to use.
Type the volume number and press Return. If you have only one volume, type 1 and press Return.
Specify next volume #: 1 |
The files and directories in the list are extracted and restored to the current working directory.
To keep the mode of the current directory unchanged, enter n at the set owner/mode prompt.
set owner/mode for `.'? [yn] n |
You must wait while ufsrestore performs its final cleanup.
Quit the ufsrestore program.
ufsrestore> quit |
You then see the shell prompt.
Verify the restored files.
The following example extracts the files /etc/passwd and /etc/shadow from the backup tape.
# cd /var/tmp # ufsrestore if /dev/rmt/0 ufsrestore> ls .: .cpr_config etc/ lost+found/ sbin/ usr/ TT_DB/ export/ mnt/ sccs/ var/ b/ home/ net/ share/ vol/ bin kernel/ opt/ shared/ ws/ dev/ lib platform/ src/ xfn/ devices/ license/ proc/ tmp/ ufsrestore> cd etc ufsrestore> add passwd shadow ufsrestore> verbose verbose mode on ufsrestore> extract Extract requested files You have not read any volumes 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 extract file ./etc/shadow extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n ufsrestore> quit # |
Become superuser.
Write-protect the tape for safety.
Insert the volume 1 tape into the tape drive.
Change to a directory for restoring files temporarily.
# cd /var/tmp |
To avoid conflicts with other users, you might want to create and change to a subdirectory, such as /var/tmp/restore, in which to restore the files.
If you are restoring a hierarchy, you should restore the files in a temporary directory on the same file system where the files will reside, so you can use the mv command to move the entire hierarchy where it belongs after it is restored.
Use the ufsrestore command to restore the file.
# ufsrestore xvf /dev/rmt/n filename ... |
x |
Tells ufsrestore to copy specific files or directories in the filename argument. |
v |
Displays the file names as they are restored. |
f /dev/rmt/n |
Identifies the tape device name. |
filename ... |
One or more individual file or directory names separated by spaces, for example: ./export/home/user1/mail ./export/home/user2/mail. |
Type the volume number where files are located and press Return.
Specify next volume #: 1 |
The file is restored to the current working directory.
To keep the mode of the current directory unchanged, type n and press Return at the set owner/mode prompt.
set owner/mode for '.'? [yn] n |
Verify the restored files.
The following example restores the passwd and shadow files to the /var/tmp directory.
# cd /var/tmp # ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadow Verify volume and initialize maps Media block size is 126 Dump date: Wed Jul 14 08:42:42 1999 Dumped from: the epoch Level 0 dump of a partial file system on starbug:/etc Label: none Extract directories from tape Initialize symbol table. Make node ./etc Extract requested files You have not read any volumes 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 extract file ./etc/passwd extract file ./etc/shadow Add links Set directory mode, owner, and times. set owner/mode for `.'? [yn] n Directories already exist, set modes anyway? [yn] n # cd etc # mv passwd /etc # mv shadow /etc # ls -l /etc |
You can restore files from a remote tape drive by adding remote-host: to the front of the tape device name, when using the ufsrestore command.
ufsrestore xf [user@]remote-host:/dev/rmt/n filename |
The following example restores files using a remote tape drive /dev/rmt/0 on the system venus.
# ufsrestore xf venus:/dev/rmt/0 filename |
You cannot use this procedure to restore root (/) or /usr. See "How to Restore the root (/) and /usr File Systems" for instructions on restoring these file systems.
If necessary, unmount the file system.
# umount /dev/rdsk/device-name |
Create the new file system with the newfs(1M) command.
# newfs /dev/rdsk/device-name |
You are asked if you want to construct a new file system on the raw device. Verify that the device-name is correct so you don't destroy the wrong file system.
Confirm that the new file system should be created.
newfs: construct a new file system /dev/rdsk/cwtxdysz:(y/n)? y |
The new file system is created.
Mount the new file system on a temporary mount point.
# mount /dev/dsk/device-name /mnt |
Change to the /mnt directory.
# cd /mnt |
You have changed to the mount-point directory.
Write-protect the tapes.
Insert the first volume of the level 0 tape into the tape drive.
Use the ufsrestore command to restore the files on the tapes.
# ufsrestore rvf /dev/rmt/n |
The level 0 dump is restored. If the dump required multiple tapes, you would be prompted to load each tape in numeric order.
Remove the tape and load the next level tape in the drive.
Always restore tapes starting with 0 and continuing until you reach the highest level.
Repeat Step 7 through Step 10 for each level of dump, from the lowest to the highest level.
Verify the file system is restored.
# ls |
Remove the restoresymtable file.
# rm restoresymtable |
The restoresymtable file created by ufsrestore is removed.
Change to another directory.
# cd / |
Unmount the newly restored file system.
# umount /mnt |
Remove the last tape and insert a new tape that is not write-protected in the tape drive.
Use the ufsdump command to make a level 0 backup of the newly restored file system.
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name |
You should always do an immediate backup of a newly created file system, because ufsrestore repositions the files and changes the inode allocation (the restored file system will appear to have changed since the previous backup).
Mount the restored file system.
# mount /dev/dsk/device-name mount-point |
The restored file system is mounted and available for use.
Verify the restored and mounted file system is available.
# ls mount-point |
The following example restores the /export/home file system.
# umount /export/home # newfs /dev/rdsk/c0t3d0s7 newfs: construct a new file system /dev/rdsk/c0t3d0s7: (y/n)? y /dev/rdsk/c0t3d0s7: 410400 sectors in 270 cylinders of 19 tracks, 80 sectors 200.4MB in 17 cyl groups (16 c/g, 11.88MB/g, 5696 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 24432, 48832, 73232, 97632, 122032, 146432, 170832, 195232, 219632, 244032, 268432, 292832, 317232, 341632, 366032, 390432, # mount /dev/dsk/c0t3d0s7 /mnt # cd /mnt # ufsrestore rvf /dev/rmt/0 Verify volume and initialize maps Media block size is 126 Dump date: Wed Jul 14 08:49:33 1999 Dumped from: the epoch Level 0 dump of /export/home on earth:/dev/dsk/c0t3d0s7 Label: none Begin level 0 restore Initialize symbol table. Extract directories from tape Calculate extraction list. Warning: ./lost+found: File exists Make node ./kryten Make node ./kryten/letters Make node ./kryten/reports Extract new leaves. Check pointing the restore extract file ./kryten/.cshrc extract file ./kryten/.login extract file ./kryten/b extract file ./kryten/memos extract file ./kryten/letters/b extract file ./kryten/letters/letter1 extract file ./kryten/letters/letter2 extract file ./kryten/letters/letter3 extract file ./kryten/reports/reportA extract file ./kryten/reports/reportB extract file ./kryten/reports/reportC Add links Set directory mode, owner, and times. Check the symbol table. Check pointing the restore # ls # rm restoresymtable # cd / # umount /mnt # ufsdump 0ucf /dev/rmt/0 /export/home . . . # mount /dev/dsk/c0t3d0s7 /export/home # ls /export/home |
Add a new system disk to the system where the root (/) and /usr file systems will be restored.
For a detailed description about adding a system disk, refer to Chapter 30, SPARC: Adding a Disk (Tasks) or Chapter 31, IA: Adding a Disk (Tasks).
Mount the new file system on a temporary mount point.
# mount /dev/dsk/device-name /mnt |
Change to the /mnt directory.
# cd /mnt |
Write-protect the tapes.
Use the ufsrestore command to restore the root file system.
# ufsrestore rvf /dev/rmt/n |
The level 0 tape is restored.
Remove the tape and load the next level tape in the drive.
Always restore tapes starting with 0 and continuing from lowest to highest level.
Continue to use the ufsrestore command as needed.
# ufsrestore rvf /dev/rmt/n |
The next level tape is restored.
Verify the file system is restored.
# ls |
Remove the restoresymtable file.
# rm restoresymtable |
Removes the restoresymtable file that is created and used by ufsrestore to check-point the restore.
Change to the root (/) directory.
# cd / |
Unmount the newly created file system.
# umount /mnt |
Check the new file system.
# fsck /dev/rdsk/device-name |
The restored file system is checked for consistency.
Create the boot blocks on the root partition by using the installboot(1M) command.
# installboot /usr/platform/`uname-i`/lib/fs/ufs/bootblk /dev/rdsk/devicename |
See "SPARC: Example--Restoring the root (/) File System" for an example of using the installboot command on a SPARC based system or "IA: Example--Restoring the root (/) File System" for an example of using the installboot command on an IA based system.
Insert a new tape in the tape drive.
Back up the new file system.
# ufsdump 0uf /dev/rmt/n /dev/rdsk/device-name |
A level 0 backup is performed. Always do an immediate backup of a newly created file system because ufsrestore repositions the files and changes the inode allocation.
Repeat steps 5 through 18 for the /usr file system, if necessary.
Reboot the system.
# init 6 |
The system is rebooted.
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/sun4m/lib/fs/ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6 |
# mount /dev/dsk/c0t3d0s0 /mnt # cd /mnt # tapes # ufsrestore rvf /dev/rmt/0 # ls # rm restoresymtable # cd / # umount /mnt # fsck /dev/rdsk/c0t3d0s0 # installboot /usr/platform/`uname -i`/lib/fs/ufs/pboot /usr/platform/`uname -i`/lib/fs/ ufs/bootblk /dev/rdsk/c0t3d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t3d0s0 # init 6 |