分享
 
 
 

也谈Linux下的数据备份

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

数据的价值自不待言,损坏后重新生成需要花费宝贵的时间和令人绝望的努力,有时甚至不可能重新产生,例如一些一次性不可逆测试实验的。由于数据是一种投资,你必须保护它,并采取措施避免丢失。否则并且要花费高昂的金钱来挽救,有时也得配上泪水——看看“9.11事件”的悲惨一幕,这样的话语可不是危言耸听——众多的服务器被摧毁,对于在备份管理上有漏洞的公司,只好自吞苦果。相反,有很好的备份措施,则可以将灾难损失降低到最低点。

丢失数据一般有几个个原因:硬件失败、软件曲线、人为因素或自然灾害。虽然现代硬件已经相当可靠,但仍可能自然损坏。存储数据起决定性作用的硬件是硬盘,它依赖微小的磁道和扇区在充满电子干扰信号的世界里保存脆弱的数据。同时,现代软件依然不可靠,不够强壮。更糟糕的是,人更不可靠,他们很随意,有时会疲倦,他们很容易犯错误,甚至为某种目的恶意地破坏数据——就是那些以攻击别人的数据库为乐的可恶的“入侵者”。而不可抗拒的自然可能不是邪恶的,但也可能造成破坏。所以寄希望理想的数据安全,几乎是不可能做到的,未雨绸缪,早打算才是上策。

备份是保护数据投资的方法。有数据的多个拷贝,就不怕某个损坏(所需做的仅仅是从备份中恢复丢失的数据)。

备份所需的最重要的策略是选择备份介质。一般用软盘和磁带。软盘很便宜,还算可靠,不太快,很容易得到,但数据量大时不容易使用。磁带也很便宜,比较可靠,存储速比较算快,很容易得到。

备份工具

有很多备份工具可以选择。传统的Unix备份工具是tar、cpio和dump。另外,还可以使用大量第三方软件包(包括自由软件和商业软件)。不同的备份介质的选择可能影响工具的选择。

tar和cpio类似,从备份来看二者功能基本等效。都能将文件存到磁带并取出文件。都能使用几乎所有备份介质,因为其核心设备驱动能处理底层设备操作,而对用户级程序看来所有设备都差不多。有一些Unix版本的tar和cpio备份工具对非普通文件的处理可能有问题((比如在连接、设备文件、极长路径名的文件等等的处理),但Linux上的这些命令则能正确处理所有文件。

dump则与tar和cpio不同,它直接读文件系统,而不通过文件系统。它本事直接针对备份而开发的而tar和cpio实际上是针对存档文件的,尽管它们也胜任备份工作。

直接读文件系统有许多优点,它可不考虑对备份文件的时间标记;对于tar和cpio ,必须先将文件系统只读安装。而直接读文件系统更有效,如果所有东西都要备份,它的备份时间相对比较短,因为它使磁头移动最少。它的主要缺点是每个文件系统种类需要特定的备份程序。另外Linux的dump程序只识别ext2文件系统。

dump也直接支持备份级;而对于对tar 和cpio ,这必须用其他工具实现。

tar备份命令

一个全备份可以很容易地用tar 实现:

# tar -create -file /dev/ftape /usr/src

tar: Removing leading / from absolute path names in the archive

#

上面的例子使用GNU版本的tar及其长选项名。传统版本的tar只识别单字符选项。 GNU版还能处理一卷磁带或一张磁盘不能容纳的备份,及很长的路径名;这不是所有传统的版本能作到的。

如果你的备份一盘磁带不能容纳,你需要使用-multi-volume (-M)选项:

# tar -cMf /dev/fd0H1440 /usr/src

tar: Removing leading / from absolute path names in the archive

Prepare volume #2 for /dev/fd0H1440 and hit return:

#

注意开始备份前要格式化所有软盘,或在tar命令需要新软盘时用另一个虚拟控制台或虚拟终端格式化它。

备份完后,应该检查它是否完好,用-compare (-d)选项:

# tar -compare -verbose -f /dev/ftape

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

....

#

失败的备份检查意味着如果你丢失了原始数据,备份也无法恢复。

增量备份可用带-newer (-N)选项的tar 来实现:

# tar -create -newer '8 Sep 1995' -file /dev/ftape /usr/src -verbose

tar: Removing leading / from absolute path names in the archive

usr/src/

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/modules/

usr/src/linux-1.2.10-includes/include/asm-generic/

usr/src/linux-1.2.10-includes/include/asm-i386/

usr/src/linux-1.2.10-includes/include/asm-mips/

usr/src/linux-1.2.10-includes/include/asm-alpha/

usr/src/linux-1.2.10-includes/include/asm-m68k/

usr/src/linux-1.2.10-includes/include/asm-sparc/

usr/src/patch-1.2.11.gz

#

遗憾的是,tar命令不能知道一个文件的i节点信息变化。例如,文件的权限位变化,或文件名变化。不过好在可用find命令和比较当前文件系统状态和先前备份的文件列表来解决。

tar的展开

tar 的-extract (-x)选项展开文件:

# tar -extract -same-permissions -verbose -file /dev/fd0H1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/kernel.h

...

#

也可以用命令行只展开特定的文件和目录(及其中的文件和子目录):

# tar xpvf /dev/fd0H1440 usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

#

用-list (-t)选项看一个备份卷中有什么文件:

# tar -list -file /dev/fd0H1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/kernel.h

...

#

注意tar是顺序读一个备份卷,因此碰到庞大的卷则费时颇多。另外使用磁带机或其他存储介质时不可能使用随机存取数据库技术。

压缩备份

备份占用大量空间,要花费大量金钱。为了降低空间需求,备份可以压缩。有几种方法可以解决。有些程序内置支持压缩,例如GNU tar的-gzip (-z)选项,通过管道(pipe)命令,在写到备份介质前,先用gzip压缩程序压缩数据。

不幸的是,压缩备份可能导致问题。基于压缩工作的原理,如果一个bit错误,可能导致所有其他压缩数据不可用。有些备份程序内置错误校正,但没有办法处理大量的错误。就是说,如果用GNU tar压缩备份,一个单独的错误回导致整个备份丢失。备份必须可靠,这样的压缩方法不好。

还有一个方法是单独压缩每个文件,这也回导致一个文件的丢失,但不会影响其他文件。丢失的文件可能已经损坏,因此这种情况比不使用压缩差不了多少。 afio 程序(cpio 的一个变种)可以这样。

压缩需要时间,对某些类型的磁带机,备份程序写数据就变得非常慢,当然这可以靠输出缓冲来避免(如果备份程序足够“聪明”,可以内置处理,或者可以通过其他程序来实现), 当及时这样也可能效率不高,这也是备份的一个问题。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有