一、磁带和磁带机: 常见的磁带介质如下表所示:
介质类型 | 大致容量 |
1/2-inch reel tape | 140MB (每英寸6250B) |
1/4-inch cartridge (QIC) cartridge tape | 8GB |
8-mm cartridge tape | 40GB |
4-mm digital audio tape (DAT) cartridge tape | 24GB |
DLT 1/2-inch cartridge tape | 70GB |
LTO cartridge tape | 100GB |
SDLT cartridge tape | 160GB |
1.磁带驱动器: 磁带的逻辑设备名格式为:/dev/rmt/#hn #代表磁带逻辑编号,总是以0开始,标识磁盘驱动器的第一个实例。 h代表磁带密度,可分为:l(低)、m(中)、h(高)、c(压缩)及u(高压缩的)。 n代表no-rewind,即操作完成后,不能倒带。 磁带驱动器支持硬件压缩,但压缩比不如软件压缩,不过压缩速度比软件压缩快。默认的磁带设备名字存放在/kernel/drv/st.conf文件中。 2、磁带驱动器控制命令:mt 并非所有的磁带驱动器都支持mt命令的所有选项,mt命令的格式如下:mt -ftape-device-name command count命令示例: mt status:显示磁带驱动器的状态信息。 mt rewind:倒带 mt offline:倒带并离线,如果硬件支持就卸载。 mt fsf count:前进到指定的记录点。 以下命令把磁带定位到第三个记录的开始点: #mt -f /dev/rmt/0n fsf 2 二、备份软件: 在solaris中用的最多的备份软件是Veritas Netbackup(简称NBU),这里只谈solaris自带的备份工具; Ufsdump:用于备份文件系统; Ufsrestore:用于从备份中恢复数据; Fssnap:用于创建文件系统的在线快照,然后通过快照实现在线文件系统的备份。 三、执行备份作业: 备份有三种:全备、增量备份和差异备份。 1. 增量备份: Solaris采用数字0~9来区分不同的备份类型,0代表全备,1~9表示备份比其数字更低的最近一次备份以来更新的所有数据。例如增量备份策略情况如下所示: 周六周一周二周三周四周五 0 3 4 5 6 20级备份指的是月备份策略。 每月一次全备,周一至周四执行3~6级备份,周五执行2级备份。 2./etc/dumpdates 这是备份作业的历史记录文件,备份作业完成一次都会在这个文件中增加一条记录,如果本次备份的级别和上一次备份的级别一样,则会刷新上次的备份记录。 #cat /etc/dumpdates/dev/rdsk/c0t2d0s6 0 Fri Nov 5 19:12:27 2007 ---0级备份 /dev/rdsk/c0t2d0s0 0 Fri Nov 5 20:44:02 2007---0级备份 /dev/rdsk/c0t0d0s7 0 Tue Nov 9 09:58:26 2007---0级备份 /dev/rdsk/c0t0d0s7 1 Tue Nov 9 16:25:28 2007---0级备份 Ufsdump每次执行前都会检查这个文件,查找比本次备份级别低的最近一次备份作业记录决定从哪个日期开始备份文件,如果备份作业失败,则不会更新/etc/dumpdates文件。 3./usr/sbin/ufsdump 该命令的语法如下: ufsdumpoption(s) argument(s) filesystem_nameufsdump的选项如下表所示:
选项 | 说明 |
0~9 | 备份级别 |
fdump_file | 指定使用的磁带设备,默认为/dev/rmt/0,如果是减号'-',则转储到标准输出。 |
l | Autoload(自带装载),如果在备份完成之前,磁带已用完,就等待2分钟更换磁带,并自带装载新磁带,若2分钟内未更换磁带则会出现提示并继续等待。 |
n | Notify,发送消息给当前在线的所有属于sys组的用户 |
o | Offline,备份完成,或者磁带用完后倒带,或弹出磁带时,让磁带驱动器自动离线。 |
S | 大小估计 |
u | Update,在/etc/dumpdates文件中加入一条记录 |
v | Verify,验证刚刚备份的内容是否和源一样,若不一样,系统则会要求操作者插入新介质重新备份 |
W or w | Warning,这个选项忽略其他任何选项,根据/etc/dumpdates和/etc/vfstab文件的信息产生关于备份的提示信息 |
file_to_dump | 指定要进行备份的对象 |
4.备份本地的磁带: (1),通告所有用户,系统将进行备份,切换到单用户模式: # /usr/sbin/shutdown -y -g300 'System is being shutdown for backup' (2),检查文件系统的一致性: fsck /export/home (3),备份到磁带: # ufsdump 0uf /dev/rmt/0 /export/home 5.备份到远程的磁带: (1),远程系统必须在/.rhosts文件中包含本机的名字: host2# vi /.rhosts host1 (2).在本机执行以下命令: host1# ufsdump 0uf host2:/dev/rmt/0 /export/home 6.备份实例: (1).倒带: #mt rewind (2).创建/export/home的备份: #ufsdump 0S /export/home #umount /export/home-若显示系统busy,#umount -f /export/home强行卸载。 #ufsdump 0uf /dev/rmt/0 /export/home #cat /etc/dumpdates-----全备完成,文件中增加一条0级记录。 (3).添加文件和目录到/export/home文件系统: #mount /dev/dsk/c0t0d0s7 /export/home #cp -r /root/ /export/home #umount /export/home (4).进行增量备份: #mt -f /dev/rmt/0 fsf 1 ---跳到下一个记录点,进行第二次备份操作。 #ufsdump 1uf /dev/rmt/0 /export/home (5)移走磁带: #mt offline (6)查看备份记录文件: #cat /etc/dumpdates ----1级增备完成。 四、执行恢复作业: 这里使用的命令是ufsrestore,其格式和选项说明如下所示: Ufsrestore option(s) argument(s) filesystem 选项说明:
选项 | 说明 |
t | 查看备份介质上的内容列表 |
r | 从备份介质出完整的文件系统 |
xfile1 file2 | 仅恢复指定的文件 |
i | 进入交互式恢复模式 |
v | 详细模式,每恢复一个文件就会在终端屏幕上显示文件的路径名 |
fdevice | 指定磁带设备的名字 |
当从一个备份磁带恢复整个文件系统时,系统会创建一个restoresymtable文件,ufsrestore命令使用restoresymtable文件在增量恢复的时候进行关键点检测或忽略信息,以及把磁带上的被备份的文件系统的inode映射到磁盘上的新文件系统中的文件,恢复完成后可删除restoresymtable文件。Ufsrestore默认总是把文件恢复到当前目录下。命令示例介绍: (1)显示磁带中的内容: # ufsrestore tf /dev/rmt/0(2)只恢复两个指定的文件: # ufsrestore xf /dev/rmt/0 ./xx/xx.file1 ./xx/xx.file2(3)把c1t0d0s0的文件转储到newroot目录: # ufsdump 0f - /dev/rdsk/c1t0d0s0|(cd /tmp/newroot;ufsrestore xf -) (4)进入交互式恢复模式: # ufsretore if /dev/rmt/01、恢复/opt文件系统(c0t0d0s5) (1)创建新的文件系统: #newfs /dev/rdsk/c0t0d0s5 ---假设/opt文件系统处在/c0t0d0s5 (2)挂接到/opt目录,并进入/opt目录: #mount /dev/dsk/c0t0d0s5 /opt #cd /opt (3)从备份磁带恢复/opt文件系统: #ufsrestore rf /dev/rmt/0 (4)删除restoresymtable文件: #rm restoresymtable (5)卸载文件系统: #cd /;umount /opt (6)使用fsck校验文件系统的完整性: #fsck /dev/rdsk/c0t0d0s5 (7)执行该文件系统的全备(因为恢复整个文件系统的时候inode number重新分配,所以要再次全备) #ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t0d0s5 ---可直接对裸设备备份 注:当恢复整个文件系统时,总是从0级备份磁带开始,然后逐级增加,恢复完后一定要再次全备,因为ufsrestore改变了文件的位置和inodes的分配。 2、恢复/usr文件系统(c0t0d0s6) (1)如果/,/var,/usr文件系统受到破坏,就要进入单用户模式: Ok boot cdrom -s (2)恢复步骤: #newfs /dev/rdsk/c0t0d0s6 ---假设/usr文件系统处在/c0t0d0s6 #mount /dev/dsk/c0t0d0s6 /a #cd /a #ufsrestore rf /dev/rmt/0 #rm restoresymtable #cd /;umount /a #fsck /dev/rdsk/c0t0d0s6 #ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t0d0s6 (3)重启系统: #init 63、恢复/文件系统(c0t0d0s0) (1)进入单用户模式: Ok boot cdrom -s (2)恢复步骤: #newfs /dev/rdsk/c0t0d0s0 #mount /dev/dsk/c0t0d0s0 /a #cd /a; ufsrestore rf /dev/rmt/0 # rm restoresymtable #cd /usr/platform/`uname -m`/lib/fs/ufs安装新的启动引导信息到跟分区的扇区1到扇区15,sparc和x86如下所示: SPARC#installboot bootblk /dev/rdsk/c0t0d0s0如果是x86版使用installgrub命令: X86#installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0 # cd /;umount /a #fsck /dev/rdsk/c0t0d0s0 # ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t0d0s0 (3)重启系统: #init 64、交互式恢复: (1)进入交互式恢复界面: #cd /export/home/tmp #ufsrestore ivh /dev/rmt/0Verify volume and initialize maps Media block size is 64 Dump date: Mon Oct 11 12:30:44 2004 Dumped from: the epoch Level 0 dump of /export/home on sys43:/dev/dsk/c0t0d0s7 Label: none Extract directories from tape Initialize symbol table. (2)显示磁带中目录结构的内容: ufsrestore >ls.: 2 *./ 13 directory1 15 directory3 11 file2 2 *../ 14 directory2 10 file1 12 file3ufsrestore > cd directory1 ufsrestore > ls ./directory1:3904 ./ 2 *../ 3905 file1 3906 file2 3907 file3 (3)选择想要恢复的文件,可看到文件前面*号表示被选择: ufsrestore > add file1 file2 Make node ./directory1 Files you want to restore are marked with an asterisk (*) for extraction. If you extract a directory, all of the directory contents are marked for extraction. In this example, two files are marked for extraction. The ls command displays an asterisk in front of the selected file names,file1 and file2. ufsrestore >ls./directory1: 3904 *./ 2 *../ 3905 *file1 3906 *file2 3907 file3 ufsrestore >delete file1删除一个文件。 ufsrestore >ls./directory1: 3904 *./ 2 *../ 3905 file1 3906 *file2 3907 file3 (4)查看被选择的文件: ufsrestore >marked./directory1: 3904 *./ 2 *../ 3906 *file2 (5)解出被选择的文件到当前目录:ufsrestore >extractExtract requested filesYou 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 #: 1extract file ./directory1/file2 Add links Set directory mode, owner, and times. (6)选择权限设置方式,n为重新设置权限,y和磁带中的备份的权限保持一致: set owner/mode for ‘.’? [yn]nufsrestore > quit (7)把恢复出来的文件移动到正确的目录,并删除临时目录: # mv /export/home/tmp/directory1/file2 /export/home # rm -r /export/home/tmp/directory15、恢复增量备份(/export/home)非交互式恢复增量备份: (1)查看/etc/dumpdates中关于/export/home的信息: # more /etc/dumpdates|grep c0t0d0s7 /dev/rdsk/c0t0d0s7 0 Wed Apr 07 09:55:34 2007 /dev/rdsk/c0t0d0s7 1 Web Apr 07 09:57:30 2007 (2)重新构建c0t0d0s7的文件系统,再挂载到/export/home目录: #newfs /dev/rdsk/c0t0d0s7 #mount /dev/rdsk/c0t0d0s7 /export/home (3)插入最低级别(0级)备份磁带,并执行恢复操作: #cd /export/home # ufsrestore rvf /dev/rmt/0Verify volume and initialize mapsMedia block size is 64Dump date: Wed Apr 07 09:55:34 2004Dumped from: the epochLevel 0 dump of /export/home on sys41:/dev/dsk/c0t0d0s7Label: noneBegin level 0 restoreInitialize symbol table.Extract directories from tapeCalculate extraction list.Make node ./directory1Make node ./directory2Make node ./directory3Extract new leaves.Check pointing the restoreextract file ./file1extract file ./file2extract file ./file3Add linksSet directory mode, owner, and times.Check the symbol table.Check pointing the restore(4)放入最新的第2级别的磁带: #ufsrestore rvf /dev/rmt/0Verify volume and initialize mapsMedia block size is 64Dump date: Wed Apr 07 09:57:30 2004Dumped from: Wed Apr 07 09:55:34 2004Level 1 dump of /export/home on sys41:/dev/dsk/c0t0d0s7Label: noneBegin incremental restoreInitialize symbol table.Extract directories from tapeMark entries to be removed.Calculate node updates.Make node ./directory4Make node ./directory5Make node ./directory6Find unreferenced names.Remove old nodes (directories).Extract new leaves.Check pointing the restoreextract file ./file4extract file ./file5extract file ./file6Add linksSet directory mode, owner, and times.Check the symbol table.Check pointing the restore重复上一次操作,逐级恢复。交互式恢复增量备份:(1)进入交互式恢复模式,v表示输出详细信息: #ufsrestore iv /dev/rmt/0Verify volume and initialize mapsMedia block size is 64Dump date: Mon Oct 11 13:10:12 2004Dumped from: the epochLevel 0 dump of /export/home on sys41:/dev/dsk/c0t0d0s7Label: noneExtract directories from tapeInitialize symbol table.ufsrestore >ls.:2 *./ 8 directory2 5 file22 *../ 9 directory3 6 file37 directory1 4 file1 3 lost+found/The system lists files from the last Level0backup.ufsrestore >add *Warning: ./lost+found: File existsufsrestore >extractExtract requested filesYou have not read any volumes yet.Unless you know which volume your file(s) are on you should startwith the last volume and work towards the first.Specify next volume #:1–程序提示放入下一个磁带库extract file ./file1extract file ./file2extract file ./file3extract file ./directory1extract file ./directory2extract file ./directory3Add linksSet directory mode, owner, and times.set owner/mode for ’.’? [yn]n –因为是恢复增量备份,原目录肯定存在Directories already exist, set modes anyway? [yn]n –不覆盖原目录的权限设置。ufsrestore >q(2)根据/etc/dumpdates文件中的信息显示0级备份后有一个增量备份,放入下一个磁带:#ufsrestore ivVerify volume and initialize mapsMedia block size is 64Dump date: Wed Apr 07 09:57:30 2004Dumped from: Wed Apr 07 09:55:34 2004Level 1 dump of /export/home on sys41:/dev/dsk/c0t0d0s7Label: noneExtract directories from tapeInitialize symbol table.ufsrestore >ls.:2 *./ 13 directory4 15 directory6 11 file52 *../ 14 directory5 10 file4 12 file6ufsrestore >add *ufsrestore >extractExtract requested filesYou have not read any volumes yet.Unless you know which volume your file(s) are on you should startwith the last volume and work towards the first.Specify next volume #:1extract file ./file4extract file ./file5extract file ./file6extract file ./directory4extract file ./directory5extract file ./directory6Add linksSet directory mode, owner, and times.set owner/mode for ’.’? [yn]nufsrestore >q五、快照备份: 快照命令的语法:/usr/sbin/fssnap -FFSType-V -ospecial_option(s)mount-point | special选项如下所示:
-d | 删除和文件系统相关的快照,如果建立快照时使用-o选项,则备份恢复文件也会一起删除,否则,备份恢复文件要手工删除。 |
-F FSTYPE | 指定要使用的文件系统类型 |
-I | 显示指定类型的文件系统的快照状态 |
-V | 显示完整的命令,但不执行命令 |
-o | 特殊的选项,指定备份文件的位置和大小等 |
要创建一个快照,通常使用如下命令: #fssnap -F ufs -o bs=backing_store_path /file-systembacking_store_path可以是一个裸设备,也可以是已存在的目录。 下面的命令将在/var/tmp目录中创建/export/home文件系统的快照,快照文件名默认为snapshot0. #fssnap -F ufs -o bs=/var/tmp /export/home #ls -l /var/tmp Snapshot0快照子系统把文件系统的数据存储在一个备份恢复文件(backing-store file)中,具有如下特点: 1、快照文件是一个bit-mapped文件,会一直占用磁盘空间知道删除快照。 2、快照文件的大小随着被拍照的文件系统的活动次数而改变。 3、快照文件的位置不能和被拍照的文件系统处于同一文件系统。 4、快照文件可以存在不同类型的文件系统上,比如ufs或nfs文件系统。 Fssnap命令,创建了1个快照文件和2个只读的虚拟设备:块虚拟设备/dev/fssnap/0,裸虚拟设备/dev/rfssnap/0,虚拟设备可以像其他设备一样使用备份工具对其进行备份。从一个虚拟设备中创建的备份实际上是源文件系统的备份(ufs snapshot所拍照的哪个文件系统). 当一个UFS snapshot创建时,文件系统会暂时锁定,用户在这个文件系统写数据时,可能会感觉到轻微的停滞,该文件系统越大,停滞的时间越长,写数据没有任何影响。 命令用法示例: (1),限定快照恢复文件的大小: -o maxsize=n(k,m,g) -o minsize=n(k,m,g)如果一个快照文件用完了磁盘空间,系统会自动删除ufs snapshot,不会影响源文件系统,可查看/var/adm/messages中关于snapshot的错误消息。 如果强行卸载一个活动的文件系统(如umount -f),如果该文件系统有快照存在,系统会自动删除该快照。 (2)实例演示:创建/opt快照: #fssnap -o maxsize=500m,bs=/var/tmp /export/home /dev/fssnap/0查看快照的内容: #ls -lh /var/tmp/snapshot0显示快照的详细信息: #fssnap -i 0/opt #/usr/lib/fs/ufs/fssnap -i /export/home只能用这个命令才能看详细信息 Snapshot number : 0 Block Device : /dev/fssnap/0 Raw Device : /dev/rfssnap/0 Mount point : /export/home Device state : idle Backing store path : /var/tmp/snapshot0 Backing store size : 0 KB Maximum backing store size : 512000 KB Snapshot create time : Mon Oct 11 08:58:33 2004 Copy-on-write granularity : 32 KB挂载和卸载快照设备: #mkdir /tmp/tmp.snap #mount -o ro /dev/fssnap/0 /tmp/tmp.snap #umount /dev/fssnap/0删除快照: #fssnap -d /export/home #rm /var/tmp/snapshot0 (3),备份快照: 1、对UFS快照进行备份:创建快照并挂载新添加的快照虚拟设备: #fssnap -F ufs -o bs=/export/home /opt #fssnap -i #/usr/lib/fs/ufs/fssnap -i /opt #mkdir /tmp/optsnap #mount -o ro /dev/fssnap/0 /tmp/optsnap使用tar命令进行备份: #cd /tmp/optsnap #tar cvf /dev/rmt/0使用ufsdump命令进行备份: #ufsdump 0uf /dev/rmt/0 /dev/fssnap/0 #ufsrestore tf /dev/rmt/02、对UFS进行增量备份:命令示例: #ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t1d0s0 /dev/rfssnap/0 #ufsrestore tf /dev/rmt/0快照的增量备份实例:创建快照: #fssnap -o bs=/var/tmp /extra #fssnap -i #/usr/lib/fs/ufs/fssnap -i /extra #mkdir /extrasnap #mount -o ro /dev/fssnap/0 /extrasnap #df -k|grep extra /dev/dsk/c1t0d0s0 1294023 9 1242254 1% /extra /dev/fssnap/0 1294023 9 1242254 1% /extrasnap #touch file1 #df -k|grep extra 查看可用空间的不同/dev/dsk/c1t0d0s0 1294023 20 1242243 1% /extra /dev/fssnap/0 1294023 9 1242254 1% /extrasnap 执行全备: #ufsdump 0ufN /dev/rmt/0 /dev/rdsk/c1t0d0s0 /dev/rfssnap/0# ufsrestore tf /dev/rmt/0 -检查备份 删除快照: #umount /extrasnap #fssnap -d /extra # rm /var/tmp/snapshot0增量备份: #cp file1 file5 #cp file1 file6 #fssnap -o bs=/var/tmp/extra #mount -o ro /dev/fssnap/0 /extrasnap #df -k|grep extra/dev/dsk/c1t0d0s0 1294023 46 1242217 1% /extra /dev/fssnap/0 1294023 46 1242217 1% /extrasnap #ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c1t0d0s0 /dev/rfssnap/0#ufsrestore tf /dev/rmt/0 3、从UFS快照的备份中恢复数据:例:从磁带备份中恢复/usr文件系统的demo目录: #cd /usr #ufsrestore if /dev/rmt/0ufsrestore >add demoufsrestore >extractSpecify next volume #:1set owner/mode for ’.’? [yn]nufsrestore >quit