Thomson-Blog ( 学习,学习,再学习;努力,努力,再努力。)
在学习的路上不断成长,成功之路就在脚下。
 

系统备份与恢复常用命令

1. fbackup & frecover

A、系统备份命令: fbackup

1) fbackup的常用方式一:

[1] 进入单用户:

# init s

# shutdown 0

[2] 系统全备份

# fbackup f /dev/rmt/0m -0iv / -I /tmp/sysbk.index

-f : 设备文件名 ( such as DDS tape driver)

-i : 要包含的目录

-e: 不包含的目录

- I: 备份内容检索目录

- v: 备份内容详细列表

- 0 : 零级备份

# fbackup f /dev/rmt/0m -i / -e /home

备份除了目录 /home的所有目录

[3] 说明

a、该命令方式对系统当前mounted的文件系统进行备份

b、备份级别说明

备份级别有09个级别,如果当前系统采用零级备份,当下一次采用5级备份时,系统仅将会对有变化的文件进行备份。

 

 

2) fbackup的常用方式二:

1 # mkdir -p /tmp/fbackupfiles/index

# mkdir -p /tmp/fbackupfiles/log

2 # touch/tmp/fbackupfiles/index/full.`date+%y%m%d.%H:%M`

3〗进入单用户

# shutdown y 0

4〗对系统进行全备份

# fbackup 0vi / -f /dev/rmt/0m

-I /tmp/fbackupfiles/index/full.`date +%y%m%d.%H:%M`

2 > /tmp/fbackupfiles/log/ full.`date +%y%m%d.%H:%M`

5〗说明

通过该方式可以知道系统备份需要的时间

 

 

3) fbackup的常用方式三:

1〗进入单用户

# shutdown y 0

2〗对系统进行全备份

# fbackup 0uv / -f /dev/rmt/0m

-g /tmp/fbackupfiles/mygraph

-I /tmp/fbackupfiles/index/full.`date +%y%m%d.%H:%M`

2 > /tmp/fbackupfiles/log/ full.`date +%y%m%d.%H:%M`

3〗说明

a、文件 mygraph: 包含需要备份的目录,格式如下:

/users/data

/home/app

e /oracle/sql

b、参数 u :

当备份系统成功时,系统将更新 ar/adm/fbackupfiles/dates.

 

 

4) fbackup的常用方式四:

备份远程系统

[1] 登录在本地系统时

# remsh backup_sysname fbackup f DDS_sysname: /dev/rmt/0m -0vi /

[2] 登录在远程系统时

# fbackup f backup_sysname: /dev/rmt/0m 0vi /

5) fbackup的常用方式五:

压缩方式备份( 不建议使用、影响系统性能)

[1] 压缩方式备份

# fbackup 0vi /dir -f - | compress | dd of=/dev/rmt/0m obs=10k

“-” : 指向标准输出

[2] 查看备份内容

# dd if=/dev/rmt/0m ibs=10k | uncompress | frecover I - -f -

 

 

B系统恢复命令: frecover

1) 恢复磁带机上所有内容:

[1] 进入单用户:

# init s or shutdown 0

[2] 恢复数据

# frecover rf /dev/rmt/0m

恢复磁带上的所有数据

-f: 设备文件名

-r: 恢复磁带上的所有数据

-I: 将磁带上文件索引存到指定的文件中

# frecover I /tmp/index.txt -f /dev/rmt/0m

2) 恢复某一目录:

# frecover -xi /directory

# frecover x -i /dir1 -i /dir2

# frecover -xoi /dir

-o: 覆盖/dir下已有的、相同名称的文件

# frecover -xvXi /dir

-X: 按磁带上目录恢复数据

# cd /tmp/local; frecover xvYi /dir

-Y: 按磁带上文件名恢复数据

备份的目标:用户文件或整个文件系统

备份的关键问题: 备份频率, 备份内容, 备份介质 ,备份设备的选择

备份的工具有 dump, restore ,volcopy, labelit ,tar, cpio, dd 第三方厂商备份工具

三种备份方式 :

完全备份(普通备份Normal):备份所有选择的文件和文件夹(不管是否被设为存档属性),备份后清除备份标志;通常,在首次创建备份集时要执行一次正常备份。

增量备份(Incremental):只备份选择的,并且带有标志的文件和文件夹,它清除备份标志. 即只备份上次正常备份或增量备份以来创建或更改的文件。其需要最少的存储空间,并节省备份时间.然而在恢复文件比较耗时和困难。

差异备份(Differential):只备份选择的,并且带有标志的文件和文件夹,它不清除备份标志. 即只备份上次正常备份或增量备份以来创建或更改的文件。由于其不清除文件的存档属性,所以对一个文件执行两次差异备份,则在每一次整个文件都要被备份。差异备份使用的存储介质比增量备份多,但还原差异备份的数据则简单些。

dump

1、dump是Linux系统提供的备份和恢复工具,各种版本都提供(不提供日志文件)。

2、dump 执行文件系统增量备份的存储操作,可以备份到磁带、磁盘或一个磁盘文件。

指定文件备份

整个文件系统备份或增量备份

一个确定日期后改变的文件备份

上次备份后改变的文件备份

3、命令格式:

dump level unbdsf blkg-factor density size device-name file_system

level:备份级别,0~9

b::因子

u:更新dumpdates文件(/etc/dumpdates)

n:当dump完成时通知操作系统成员组的成员

d和s:备份卷的大小

f:指定的备份设备

w和W:空运行得到需要备份的文件系统的信息

restore

1、用于检查dump程序创建的转储以恢复新文件或整个文件系统

2、命令格式:

restore [-ctrox] vbsfy blocking-factor file-number device-name

c:全部恢复

t:用于显示卷的内容表

r:指明卷的整个内容应该被恢复到当前工作目录

o:覆盖原来的文件

x:提取恢复的文件名和路径名

i:允许交互式恢复

dump和restore的缺点

1、运行dump时,文件系统必须是不活跃的。

2、dump有时不能处理打开的文件和其他问题。

cpio

1、通过拷贝的方式实现文件或文件系统的备份与恢复

cpio –o 创建一个备份

cpio –i 从备份中恢复

cpio –p 把一个文件从一个文件系统拷贝到另一个文件系统

cpio恢复

1、操作

全恢复、部分恢复

恢复到当前目录还是文件系统

用模式匹配进行恢复

交互式恢复

读取文件内容表

tar

1、备份:tar cvfb [pattern]

2、恢复:tar mopxvf device pattern

dd

1、将文件或原始数据以拷贝方式进行备份。

2、通过管道,实现数据流操作,在传输中把拷贝内容从一种格式转化为另一种格式。

3、借助管道能完成标准输入到标准输入,实现数据流从一个命令到另一个命令,从一个系统到另一个系统。

tar、cpio、dd

tar、cpio与dump的区别

1、dump在每个卷的开头位置写入一个内容表,用restore恢复时,该索引会被读取,在该索引表上可以运行cd、ls命令查看、选择要恢复的文件。

2、dump支持远程设备的备份,cpio不支持。

3、tar和cpio可以通过文件系统来访问文件而与文件系统无关

本文对象: 对linux下的fdisk grub 文件系统有一定了解

    很多人都说Linux下没有一个和Win下Ghost功能类似的软件,要实现类似win系统的整系统备份几乎没有办法,经过多次试验使用tar完成这个功能,只是过程有点复杂。
   日后有空使用dd试试,或许效果能更好。

   注:要备份系统,最好使用光盘或者其它系统盘启动(和win下的进入dos再作备份类似),把系统的文件系统按照/etc/fstab里面的文件结构挂载到现有文件系统中。

    本文以FC4为例,直接在系统中对正在运行的系统进行备份:
首先查看系统文件结构:

[root@FC4 /root]# mount
/dev/sda6 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/sda1 on /boot type ext3 (rw)
/dev/sda7 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda3 on /usr type ext3 (rw)
/dev/sda2 on /var type ext3 (rw)
[root@FC4 /root]#
[root@FC4 /root]# fdisk /dev/sda

The number of cylinders for this disk is set to 4425.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 36.4 GB, 36401479680 bytes
255 heads, 63 sectors/track, 4425 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        13    104391   83  Linux
/dev/sda2            14      3200  25599577+  83  Linux
/dev/sda3          3201      3722   4192965   83  Linux
/dev/sda4          3723      4425   5646847+   f  Win95 Ext'd (LBA)
/dev/sda5          3723      3853   1052226   82  Linux swap
/dev/sda6          3854      3984   1052226   83  Linux
/dev/sda7          3985      4425   3542301   83  Linux

Command (m for help): q

[root@FC4 /root]# more /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
LABEL=/home             /home                   ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
/dev/sda5               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0
[root@FC4 /root]
从上面的结果可以看出,系统实际的挂节点只有 / /boot /home /usr /var,在备份的使用应该把proc sys shm等内核、系统、内存文件系统排除。
在/下建立exclude文件,内容:
[root@FC4 /root]# cat <<__ELM__ > /exclude
./proc/*
./sys/*
./dev/pts/*
./dev/shm/*
./proc/sys/fs/binfmt_misc/*
./var/log/BACKUP*
./tmp/*
__ELM__
[root@FC4 /root]#
为了恢复方便,使用相对路径,所以在exclude文件中使用相对路径,都以‘./’开头,由于我的系统中/var分区比较多的剩余空间,所以打算把备份文件放到这个文件系统中,且以BACKUP开头,所以要把备份后的文件排除:./var/log/BACKUP*
一切准备就绪,下面开始备份:
[root@FC4 /root]# cd /
[root@FC4 /]# tar -X ./exclude -czvf  ./var/log/BACKUP_FC4_20060119.tar.gz ./
OK,命令结束后,备份就完事了。你可以把BACKUP_FC4_20060119.tar.gz文件复制到其它备份主机上,用于恢复。

系统恢复:

使用系统的Rescue盘启动系统,对新硬盘进行分区,然后创建文件系统。
分区使用fdisk(如果新盘和原盘大小一致,最使分区大小也一致,具体可以根据备份前fdisk的输出结果来操作),具体步骤略。

然后创建文件系统:
Bash-3.0# mkfs.ext3 -L / /dev/sda6
Bash-3.0# mkfs.ext3 -L /boot /dev/sda1
Bash-3.0# mkfs.ext3 -L /home /dev/sda7
Bash-3.0# mkfs.ext3 -L /usr /dev/sda3
Bash-3.0# mkfs.ext3 -L /var /dev/sda2
然后挂载文件系统:
Bash-3.0# cd /mnt
Bash-3.0# mount /dev/sda6 source
Bash-3.0# cd source
Bash-3.0# mkdir boot
Bash-3.0# mount /dev/sda1 boot
Bash-3.0# mkdir home
Bash-3.0# mount /dev/sda7 home
Bash-3.0# mkdir usr
Bash-3.0# mount /dev/sda3 usr
Bash-3.0# mkdir var
Bash-3.0# mount /dev/sda2 var
然后想办法把你备份的文件弄到这个主机上来,方法不限。
我把备份文件放在/mnt/source/var/下,因为我的这个分区比较大。
然后恢复数据。
Bash-3.0# cd /mnt/source
Bash-3.0# tar -zxf var/BACKUP_FC4_20060119.tar.gz
完毕后安装grub:
Bash-3.0# chroot /mnt/source
Bash-3.0# grub
如果提示无法识别TERM,请使用:
Bash-3.0# grub --no-curses
Grub> root (hd0,0)
Grub> setup (hd0)
当然root (hd0,0)要根据你的环境而改变,具体查看grub手册。
Bash-3.0# sync
Bash-3.0# exit
Bash-3.0# exit
OK,恢复完毕。(由于我是在线的时候备份的,所以启动的时候会fsck所有硬盘,如果你进入rescue模式备份,就不会有这个提示了)。

注意: 如果你备份的系统是EL3,在恢复的时候,最好不要使用FC4的rescue盘,否则会提示使用更新版本的fsck对硬盘进行检查,所以最好使用相同版本的rescue盘进行恢复。

简单的备份方法(但是很占用空间):
用rescue盘启动后:
Bash-3.0# dd if=/dev/sda bs=10M | gzip -9 > /other/disks/path/backup_FC4_20060119.dd.gz
/other/disks/path就是其它盘上的某个目录下。
相同的盘ghost直接使用:
Bash-3.0# dd if=/dev/sda of=/dev/sdb bs=10M
恢复方法:
Bash-3.0# gzip -dc backup_FC4_20060119.dd.gz | dd of=/dev/sda bs=10M
然后重新启动就OK了。

posted on 2008-05-06 15:39  Thomson-Blog  阅读(890)  评论(0编辑  收藏  举报