LINUX系统备份工具


【导读】:LINUX系统备份工具(一),工具,备份,系统,文件,时间,层级,dump,指定,磁带,改
Linux备份和恢复

Linux备份大致有以下几个工具:Dump Tar Cpio Cp Scp Rsync



0、Linux备份与恢复的时间变化

Unix系统为每个文件都记录这三个不同的时间,第一个是mtime,即修改时间。无论何时,

只要文件内容被改变,mtime的值就会被相应修改。第二个是atime,即访问时间。只要文

件被访问(比如运行或读取),它就会被修改。第三个是ctime,即变更时间。当文件的属性

发生变化(比如改变权限或者所有关系)时,ctime的值就会被改变。管理员用ctime来查

找黑客。备份会改变atime,tar,cpio,dd都会这样做,dump通过原始设备来读取文件系统,因此它不会改变atime.



1、Dump

语法:

[root@localhost ~]# dump

dump 0.4b41 (using libext2fs 1.39 of 29-May-2006)

usage:dump [-level#] [-acmMnqSuv] [-A file] [-B records] [-b blocksize]

[-d density] [-D file] [-e inode#,inode#,...] [-E file]

[-f file] [-h level] [-I nr errors] [-j zlevel] [-Q file]

[-s feet] [-T date] [-y] [-z zlevel] filesystem

dump [-W | -w]



Dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件

参数:

 -0123456789  备份的层级

 -b<区块大小>指定区块的大小,单位为KB

 -B<区块数目>指定备份卷册的区块数目

 -c修改备份磁带预设的密度与容量

 -d<密度>设置磁带的密度。单位为BPI

 -f<设备名称>指定备份设备

 -h<层级>当备份层级等于或大于指定的层级时,将不备份用户标示为"nodump"的文件

 -n当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知

 -s<磁带长度>备份磁带的长度,单位为英尺

 -T<日期>指定开始备份的时间与日期

 -u备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等

 -w与-W类似,但仅显示需要备份的文件

 -W显示需要备份的文件及其最后一次备份的层级,时间与日期



Dump可以执行类似tar的功能,然而Dump倾向于考虑文件系统而不是个别的文件。下面是引自dump手册文件中的内容:“dump检查ext3文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上……大于输出媒体容量的转储将被划分到多个卷(自动跟踪多个卷)。在大多数媒体上,容量是通过一直写入直至返回一个end-of-media 标记来确定的。”

Dump命令操作举例

1、执行一个完全Linux备份,它把所有ext2ext3文件系统备份到一个SCSI磁带设备

范例:

dump0f/dev/nst0 /boot

dump0f/dev/nst0 /

说明:在这个例子中,系统中有两个文件系统。一个用于/boot,另一个用于/,这是常见的配置。它们必须在执行备份时单独地引用。/dev/nst0引用第一个SCSI磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列dump的一个有趣特性是其内置的增量备份功能。在上面的例子中,0表示0级或基本级备份,这是完全系统备份,您要定期执行以保存整个系统。对于后续的备份,您可以使用其他数字(1-9)来代替0,以改变备份级别,1级备份会保存自从执行0级备份以来更改过的所有文件(增量备份),2级备份会保存自从执行1级备份以来更改过的所有文件,以此类推……使用tar和脚本可以执行相同的功能,但要求脚本创建人员提供一种机制来确定上次备份是何时执行的dump具有它自己的机制,即它在执行备份时会输出一个更新文件(/etc/dumpupdates。这个更新文件将在每次执行0级备份时被重设。后续级别的备份会保留它们的标记,直至执行另一次0级备份。如果您在执行基于磁带的备份,dump自动跟踪多个卷

 

2、把/home完全备份到一个称做/dev/rmt/0cbn的本地磁带驱动器上。

# dump 0unbdsf 126 141000 11500 /dev/rmt/0cbn /home

 

3、把/home完全备份到一个称做/backup/home.dump的光学CD驱动器上

# dump 0unbdsf 126 141000 11500 /backup/home.dump /home

以上命令由三个不需要参数的选项0u and n)以及四个需要一起协作参数的选项(b,d,s and

f)组成

 

2、配合dump的程序是restore

[root@localhost ~]# restore –help

restore 0.4b41 (using libext2fs 1.39 of 29-May-2006)

usage: restore -C [-cdeHlMvVy] [-b blocksize] [-D filesystem] [-E mls]

                  [-f file] [-F script] [-L limit] [-s fileno]

       restore -i [-acdehHlmMouvVy] [-A file] [-b blocksize] [-E mls]

                  [-f file] [-F script] [-Q file] [-s fileno]

       restore -P file [-acdhHlmMuvVy] [-A file] [-b blocksize]

                  [-f file] [-F script] [-s fileno] [-X filelist] [file ...]

       restore -r [-cdeHlMuvVy] [-b blocksize] [-E mls]

                  [-f file] [-F script] [-s fileno] [-T directory]

       restore -R [-cdeHlMuvVy] [-b blocksize] [-E mls]

                  [-f file] [-F script] [-s fileno] [-T directory]

       restore -t [-cdhHlMuvVy] [-A file] [-b blocksize]

                  [-f file] [-F script] [-Q file] [-s fileno] [-X filelist] [file ...]

       restore -x [-acdehHlmMouvVy] [-A file] [-b blocksize] [-E mls]

                  [-f file] [-F script] [-Q file] [-s fileno] [-X filelist] [file ...]

命令选项:

决定restore的类型

t显示卷的内容

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

x只提取命令后面所列的文件

i允许执行交互式恢复

决定restore的行为

v指定详细输出

s读取之前跳过的磁带文件个数

b块因子

f备份驱动器的文件名

y恢复过程禁止询问

 

它用于从转储映像还原文件,restore命令执行转储的逆向功能,可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖,也可以从完全或部分备份中还原单独的文件或者目录树。

 

使用restore来执行还原

要还原使用dump保存的信息,可以使用restore命令。像tar一样,dump能够列出-t归档文件的内容,并与当前文件作比较-C。使用dump时必须小心的地方是还原数据。有两种非常不同的还原方法,您必须使用正确的方法才能获得可预测的结果。

 

重建(-r)

记住,在设计dump考虑的是文件系统,而不是单独的文件。因此,存在两种不同的文件还原风格。要重建一个文件系统,可使用-r命令行开关。设计重建的目的是为了能在空文件系统上操作,并将它还原为已保存的状态。在执行重建之前,您应该已经创建、格式化和装载(mount了该文件系统。不应该对包含文件的文件系统执行重建

 

下面是使用上面执行的转储来执行完全重建的例子。

restore -rf /dev/nst0

 

上面这个命令需要针对要还原的每个文件系统分别执行。在需要的时候,可以重复这个过程来添加增量备份

 

提取,还原单个文件(-x)

如果需要使用单独的文件而不是使用整个文件系统,您必须使用-x开关来提取它们,例如,要仅从我们的磁带备份中提取/etc目录,可使用以下命令:

restore -xf /dev/nst0 /etc

 

交互式还原(-i)

restore提供的另外一个特性是交互式模式。使用命令:

restore -if /dev/nst0

将把您置于交互式shell中,同时还显示了包含在该归档文件中的项。键入“help”将会显示一个命令列表。然后您就可以浏览并选择希望提取的项。务必记住,您提取的任何文件都将进入当前目录

 

要恢复一个使用块因子32创建的DUMP磁带备份(位于/dev/rmt/0cbn)的全部内容。

restore rvbfy 32 /dev/rmt/0cbn

有一个使用块因子32创建的位于/dev/rmt/0cbn中的DUMP磁带,如果想从该磁带中恢复文

/etc/hosts and /etc/passwd.

restore xvbfy 32 /dev/rmt/0cbn ./etc/hosts ./etc/passwd

创建内容表

restore tfy device >/tmp/dump.list

 

3、跳过文件dump(chattr)

标记将被dump跳过的文件和目录是可以做到的。实现此目的的命令是chattr,它改变ext2ext3文件系统上的扩展属性。

chattr +d <filename>(文件一旦被修改d属性就会自动清除)

上面的命令向文件添加一个标记,让dump在执行备份时跳过该文件

 

Dumprestore都能在网络上运行,因此您可以通过远程设备进行备份或还原dumprestore使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于ext2ext3文件系统。如果使用的是JFSReiserFS或者其他文件系统,您将需要其他的实用工具,比如tarcpio

 

举例说明:

dump命令是一个专门用来备份的工具

[root@laptop pyegrp]# dump -0 -u -f /dev/hda3 /boot

-0是备份的等级,从090以后都是更新备份的参数,一般常用的是09

-u是将备份记录写入/etc/dumpdates这个文件中

 

[root@laptop pyegrp]# cat /etc/dumpdates

/dev/hda9 0 Sat Nov 30 19:45:56 2002

/dev/hda9 9 Sat Nov 30 17:04:20 2002

注意:当你备份的目录是一个子目录,而不是一个分区的顶层目录时-u参数是不能使用的。-f是指定备份到的文件,也可以指定一个设备文件,我在这里指定的就是一个分区

 

更新备份:

0级别备份的基础上,向/boot写入一些新的文件,然后

umount /boot

mount /boot

注意:如果不这样做,不会将新写入的文件备份进去的

然后:

[root@laptop pyegrp]# dump -9 -u -f /dev/hda3 /boot

 

restore命令是用来恢复备份的

[root@laptop pyegrp]# restore rf /dev/hda3 /boot

 

restore命令来查看备份文件里的文件列表

[root@laptop pyegrp]# restore tf /dev/hda3

 

其他待续。。。



posted @ 2013-04-07 13:21  飞鱼flyfish  阅读(798)  评论(0编辑  收藏  举报