论坛: UNIX系统 标题: Linux备份策略研究    复制本贴地址    
作者: dinghj [dinghj]    论坛用户   登录
每个人都告诉你备份是如何的重要,但是目前却缺乏如何进行备份的详细的教程来讨论需要备份哪些文件,备份间隔应该是多少?这篇文章将为你回答这些问题,通过该文章你可以定义适合自己的备份策略。 

  总的来说,可以将备份分为两类:系统备份,其实现对操作系统和应用程序的备份(只要系统管理员的才能进行这项工作);用户备份,其实现对用户文件的备份(我不知道是否别人也使用这些术语,但是本文中都这样使用)。我们会看到,系统备份和用户备份应该区别对待。 

  系统备份 

  进行系统备份的原因是尽量在系统崩溃以后能快速简单完全地恢复系统的运行。然而当然你不会希望花费几个月来备份你的系统。进行有效备份的最有效的方法是仅仅备份那些对于系统崩溃恢复所必需的数据。 

  想想下面这种情况,你的系统大部分都非常稳定-/usr/bin的内容并不是那么经常变动,为了使事情简化,你也许已经有了系统的粗糙拷贝。大多数人都是使用某种发布安装Linux系统,然后对系统进行自己的定制。原始的发布就是我们进行系统恢复的出发点。 

  Linux区别于其他大多数操作系统的一个方面是操作系统和大多数应用程序一次被安装,而Windows或者其他Unix系统则是应用程序与操作系统是分开来安装的,首先是安装操作系统,然后才逐渐安装各个应用程序,对于这些系统,备份整个系统才是必要的,这些操作系统在初次安装时需要花费大量的时间和精力。而对于Linux来说,初次或再次安装一个基本系统(包括绝大多数应用程序)是非常简单和快速的。 

  上面说到系统的大部分都非常稳定,下面我们来考虑哪部分比较容易变动。定制自己的系统的一个方面是安装新的应用程序(没有随发布安装的应用程序)。当安装新的软件时,你应该严格要求自己,将新安装的软件和初始安装的内容分隔开来,最恰当的目录位置是/usr/local之下。/usr/local目录的目的就是包含那些相对系统来说"本地化"的内容。这样做的一个优点就是你可以容易的察看哪些程序可以从发布光盘中恢复,哪些程序需要从备份中恢复。 

  另外一个你会需要修改的地方是标准程序使用的配置文件。大多数Linux应用程序的的配置文件都是纯文本格式,你可以根据需要编辑配置文件来定制软件的运行。有时候发布将自动基于你回答的问题答案来编辑某些配置文件,但是大多数情况下你需要自己编辑它们。 

  很多重要的文件位于/etc目录之下,如: 

  /etc/printcap---配置如何与打印机通信 
  /etc/fstab---配置系统有哪些文件系统 
  /etc/passwd---包含所有的用户信息,如密码,登录shell等 
  /etc/inittab---配置init在不同运行级别下分别如何启动系统 
  /etc/XF86Config---包含XFree86的初始配置 

  不同的系统可能有很多其他的的重要配置文件,可以看到/etc目录非常重要,包含在该目录下的文件可能是数小时的工作成果。我就曾经花费了好长时间才正确的配置了XF86Config文件。想到如果重新再做一遍,我就害怕。当然,某些程序使用了其他目录下的一些文件,但是Linux的基本配置文件绝大多数都位于/etc目录下。 

  当你修改了某个程序所使用的配置文件,你不能将其搬移到其他地方,因为程序通常在固定的地方寻找配置文件。因此记录对系统所做的修改就非常重要,无论所做的修改如何的微小,这样当系统崩溃时才能轻松的恢复系统。 

  记录对系统的修改的最好的工具是一杆笔和一张纸。记录下对系统进行了哪些修改的详细描述及为什么要进行修改是非常必要的。不要自以为是的认为经过六个月你仍然能记得你如何编译安装了某个应用,或你为什么你要修改某个配置,而实际情况是你往往会忘记。即使你在一个单独的目录下安装了一个新的软件(比较容易查找修改),也应详细的记录如何安装的程序,什么时候安装的及是否有任何事情还不是非常清楚。 

  现在我们已经讨论了哪些系统文件需要进行备份,下面我们考虑多长时间应该备份一次。每次你对系统进行了修改可能是进行备份的时刻,但是不要忘记在修改系统以前对要修改的部分备份,以防止在出现问题时可以恢复。关键点是系统只有在你修改了它以后才会变动,而修改往往不是经常的事情,因此对系统的备份应该对应于这个情况。 


  用户备份 

  用户备份不同于系统备份,因为用户的数据变动更加频繁一些,因此几乎不可能建立某个用户的精确到每分钟的备份。当备份用户数据,你只是为用户提供一个虚拟的安全网络-合理的最近它数据文件的备份,当出现任何问题如误删除某些文件或者硬盘发生故障时,使用户可以恢复自己的数据。 

  用户备份应该比系统备份更加频繁,也许是每天都进行备份(cron程序提供了自动定期运行某个程序的方法)。而几乎所有的备份程序(包括tar)都提供了一个有用的特性:仅仅备份特定时间(如上次备份)以后被修改的文件。这可以显著的减少进行用户备份所需要花费的时间,因为一个用户在特定时间段内一般仅仅是修改了很少量的文件。你可以对用户数据进行完全备份和增量备份的手段结合起来使用。 

  虽然可以是用软盘作为备份的存储介质,但是每张软盘只能存储少量的数据。很多备份程序允许一个备份跨越若干个磁盘,但是这也意味着在进行备份时必须自行更换软盘。若你仅仅是管理具有若干个用户的小型系统,这也许非常简单,但是情况往往不是这样。数字或磁记录带也许是一个更好的选择,因为它们具有更大的存储容量。Linux支持很多不同类型的磁带设备,或者通过ftape模块或者通过对SCSI的支持(数字记录带往往是SCSI设备)。而且从性价比来说磁带设备的成本现在非常低廉,因此它非常实用。可选的,你的Linux可能和其他带有磁带机的计算机在同一个局域网之中,Linux可以访问其他远程机器的磁带设备。 

  无论选择什么介质进行备份,都需要管理这些介质设备。你的备份是在发生了问题时才会被使用的,这时你会依赖于备份,因此你必须经常验证你的备份。一个没有验证的备份甚至比没有备份更糟。 

  你同样应该保持多个备份集合,一个流行的策略是基于"祖父-父亲-儿子"思想。这里你拥有三套备份,最新的一份(儿子),中间的一份(父亲),最老的一份(祖父)。当你进行下一次备份,你应该覆盖掉最老的那一份,使其变为最新的一份。这种策略的优点是即使其中的一份失效,你仍然可以根据其他的备份进行恢复,但是你不必每次进行两次备份。 

  最后一个忠告也许有些奇怪:保持至少一个备份远离源机器,最好完全放在另外一栋大楼里。为什么呢?这是为了防止源机器所在地发生灾难如火灾等等,你可以重新实用一台新的机器,使用新的Linux发布,但是你不能得到一个新的备份磁带。计算机中的数据是最珍贵的,不可替代的,因此应该小心的保护它。 

  如何进行备份 

  OK,理论部分已经足够了,下面我们来看一些例子。有很多的备份程序可供选择,包括自由软件和商业软件,每种都有其优点。但是我们这里使用tar(GNU version 1.11.2)来作为示例说明。 

  这里假定系统中刚刚在/usr/local中安装了很多新软件,并且需要备份系统中/usr/local下的所有内容。这里你没有磁带设备,因此你使用了软盘,使用如下的命令: 

   $ tar -cWMf /dev/fd0 /usr/local 

  c选项标识创建一个存档,W表示在写入备份内容到备份设备以后再读出来进行验证以提高可靠性,M选项指示tar若需要时可以跨越多张磁盘,f选项通知将存档写入到哪里,在这里是/dev/df0。在很多系统中,你必需具有root的身份才能访问/dev/df0。 

天极商城 | 天极社区 | 电子版 | 天极网校 | 电子杂志 | 天极论坛 | 二手市场 | 网站地图 | Chinabyte 


首页 新闻 E企业 硬件 数字电子 软件 游戏 下载 商情 E时代 




入门级 
部门级 
企业级 
特种服务器 
其它 

五大核心 
Web服务器 
FTP服务器 
Mail服务器 
域名服务器 
文件共享服务器 
其它 
路由器应用 
代理服务器 
数据库 

Windows阵营 
Unix 
Linux 
你的位置: 软件> 服务器软件> Linux系列> 
Linux备份策略研究 
2001-09-27 18:21:00・ ・ linuxaid.com.cn 

-------------------------------------------------------------------------------- 

上一页 1 2 3 


  虽然上面这个例子指定进行验证,但是仍然可以对备份进行检测: 

   $ tar -tMf /dev/fd0 

  将显示该磁盘备份的文件的列表。依赖于/usr/local目录下内容的大小,也许会需要多张软盘来备份该目录下的内容,当然可以是用tar命令的压缩选项-z来减少需要的磁盘数目,该选项指定tar将存档使用gzip进行压缩处理以减小存档大小。这个特性有好处也有坏处,好处就是可以减少存档大小,坏处是压缩存档的任何一处的错误就会导致整个存档不可恢复。某些程序在备份文件以前将这些文件一个个单独压缩,这时一个好主意。 

  前面我提到可以仅仅备份某个时间以后被修改的文件,使用tar,你能使用N选项来进行这样的存档,例如: 

   $ tar -cf /dev/ftape -N yesterday /home 

  将备份/home目录下昨天以后被修改的所有文件。这一次数据被备份到软磁带设备/dev/ftape中。实现该功能的另外一个可选的方法是联合使用find和tar命令: 

  $ find /home -cnewer /etc/last_backup -type f i-print > back_these_up 

  $ tar -cf /dev/ftape -T back_these_up 

  $ touch /etc/last_backup 

  find命令用来查找所有在/etc/last_backup被修改以后内容发生了变化的文件,并将查找结果存放在文件back_these_up之中,T选项指示tar命令备份文件back_these_up中指定的的所有文件;随后touch文件/etc/last_backup,其将作为下次备份的时间点。将若干个这样的命令连接在一起使用是非常有用的。作为一个副产品我们的到了我们备份的文件的名字的列表文件,及最新一次备份的时间。(文件etc/last_backup的时间戳)。 

  我们可以做的另外一件事情就是过滤文件列表,从而使特定的文件不被备份。例如,也许会希望不备份对象文件或者DVI文件,因为它们可以由源文件生成。若仅仅希望忽略一种类型的文件则一个简单的grep -v将完成这个功能,egrep则可以被用来忽略多种类型的文件,如下例所示我们只要修改上例的第一行即可: 

   $ find /home -cnewer /etc/last_backup -type f i-print | egrep 

    -v '<<<>.o$|<<<>.dvi$' > back_these_up 

  这个功能也可以使用find来实现,当然可能不如egrep那么强大: 

   $ find /home -cnewer /etc/last_backup -type f ! ( -name *.o -o -name 

    *.dvi ) -print > back_these_up 

  常常会出现你的备份要求不能仅用一个简单的tar命令完成的情况,这个时候应该自己写脚本来完成需要的功能。这个脚本可能简单到上面的示例那样只有几行程序,也可能非常复杂。一个非常简单的脚本,定期使用cron来运行,能使备份变为非常简单的过程。 

  备份不应该成为一个长时间的痛苦的事情,但它是作为系统管理必不可少的工作。在着手之前进行详细的考虑和计划是应该的。做出对系统进行完全备份的决定是非常容易的,同样做出六个月以前的几个文件的老备份也是可以满足需要的决定也是非常容易的,而实际是最好的策略是在两者之间。
提交者:hotmango 顶部  
Linux系统管理技巧大荟萃   (556) 
作为桌面操作系统,Linux的人机界面可真是不敢恭维,但是,作为网络操作系统,其易用性(对于NOS而言)和高性能恐怕是很难有能出其右的。当然,这并不是说它的操作很简单,而是说若能掌握一些技巧,无论是系统设置还是网络管理都能变得轻松自如、随心所欲。 

   禁止终端模式下的显示器自动节能 

   大部分PC上安装Linux后,在终端模式下也能实现自动关闭显示器的功能,但是假如我们要在显示器上即时显示一些信息,如:网络流量、包分析等,这个功能就变得非常讨厌了。采用修改CMOS和系统属性都无法解决,解决的办法是用setterm,设置终端的命令,如setterm --blank,就能关闭自动节能这一特性。 

   将man帮助文档存为普通txt文件 

   Man的地位在Linux中可谓至关重要,比Windows里的中看不中用的Help好多了。但是它所显示的信息却不是普通的文本,如果直接将这些文字重定向到一个文本文件,你会发现,在man中高亮显示的文字就变成了两个,而且有不计其数的制表符,这使我们的打印、编辑都变得非常不便。不过使用下面这样一条语句就能得到tcsh命令的普通帮助文本:man tcshcol -b >tcsh.txt,再也不会有那些讨厌的重复字符了。 

   IDE硬盘的优化 

   Linux可能更加注重数据的安全性而非性能,这对NOS来说是完全必要的,但是打开IDE硬盘的一些有用的优化应该没什么害处吧。看看这个命令:hdparm,它的作用是显示、设置硬盘(包括光驱)的参数。我们可以先用hdparm -i /dev/hda查看hda这块硬盘的参数设置,再根据情况来修改,如:hdparm - c 1可将硬盘的I/O读写支持由16位改为32位,hdparm -m 16是开启硬盘的MultiCount。在执行这条命令之前最好先用-i参数确定你的硬盘所能支持的最大MultiCount数。主要优化的就是这两项了,其他的不敢确定也别乱来。可以用hdparm -t /dev/had在优化前后测试硬盘性能。 

   允许root从远程登录 

   Linux的默认安全设置是root不能从远程工作站登录,这使我们对Linux服务器进行远程管理造成了不小的麻烦,/etc/securtty正是控制这一机制的关键文件,在这个配置文件的root小节中加入pts/0、pts/1等你希望root能够登录的终端名就行了。 

   恢复被覆盖的MBR(主引导扇区)的Linux引导程序LILO 

   如果LILO安装在MBR,那么先装Linux再安装Windows,LILO就会被覆盖,这时我们将无法从硬盘引导Linux,怎么办?我们可以启动到Windows命令行模式,从Linux光盘上拷贝loadlin.exe和vmlinuz两个文件到Windows分区,然后执行loadlin vmlinuz root=/dev/had? rw。这条命令的作用是从指定的分区启动Linux,并将根分区(1)设为读写模式,这样就可以修改Linux的大部分设置或者恢复LILO。要注意的是这种情况启动的Linux并不完整,如:MSDOS、VFAT文件系统的支持、网络等都无法使用,不过没关系,只要能这样启动,我们可以利用mkbootdisk来创建Linux启动盘,用这张启动盘启动Linux,就能完全使用Linux了。启动Linux以后,只要将/etc/lilo.conf文件的第一项boot=/dev/hda?改为boot=/dev/hda,然后执行lilo就能恢复从MBR启动Linux。配置文件一览表 文件位置及名称作用/etc/rc.d/rc.sysinit系统启动时的公用服务配置/etc/rc.d/rc.local系统启动时的本地服务配置/etc/bashrc、/etc/profilebash shell的公用配置/home/username/.bashrc各用户私人bash shell配置/etc/securetty终端安全设置/etc/hosts主机名与ip地址的对应文件/etc/resolv.confdns服务器配置/etc/squid.conf或/etc/squid/squid.confsquid代理服务器软件配置/etc/smb.conf或/etc/samba/smb.conf基于smb的网上邻居配置/etc/dhcpd.conflinux下的dhcp服务器配置文件/etc/filesystems系统支持的文件系统列表/etc/fstab当前系统中已激活分区的信息/etc/host.conf指定系统搜索dns记录的配置文件/etc/lilo.conf启动程序lilo的配置文件 
Linux系统的大部分控制都是基于配置文件的,了解这些配置文件能更有利于使用Linux。 

   将Linux加入到Win NT/2000的启动选单中 

   Linux的启动选单不错,可惜不能显示中文,而且不能选择启动NT还是Win 98,所以我认为启动选单还是用NT系列的好。其实做起来很简单,安装完所有Windows系列操作系统后再装Linux,并在安装时选择将LILO安装到Linux所在的分区而非MBR,然后利用启动盘启动Linux,将Windows分区mount为/mnt/dos;然后执行dd if=/dev/hda? bs=512 count=1 of=/mnt/dos/ bootsect.lin,这样在Windows分区就有了一个bootsect.lin文件,它记录了Linux分区的启动信息,然后在Windows NT的启动配置文件boot.ini中加入C:BOOTSECT.LIN = "红帽子Linux 7.0",再启动电脑的时候,我们发现,在Windows NT启动选单中多了"红帽子Linux 7.0"这个选项,选择它就能启动我们的Linux。需要注意的是NT在启动时仍然只识别8.3格式的文件,所以不要把bootsect.lin改为长文件名。 

   用Squid来控制文件类型的访问 

   Linux的一大好处就是能够非常方便地对IP网络进行路由,很多Linux系统就是专门用作Internet接入路由器。但是,iptables或ipchain等包过滤软件只能控制用户访问哪些站点,而无法控制用户访问哪些文件。使用Linux下的代理服务器软件Squid可以很容易地做到这一点,Squid.conf文件中的urlpath_regex项就是控制每种注册的MIME文件访问的,例如以下语句: 

   #给出需要控制访问的MIME文件类型(访问控制列表即acl) 

   acl denymine urlpath_regex .exe .zip 

   #禁止这类文件的访问 

   http_access deny denymine 

   这样就禁止了这条语句以后的所有用户对相应站点zip、exe文件的访问,当然你可以加入其他文件类型,如MP3等。再利用iptables之类的ReDirect重定向功能,强迫用户通过Squid代理上网,即所谓"透明代理",就可完全控制用户对站点的访问了。 

   让系统使用默认的彩色文件显示 

   Linux终端下的不同类型文件的彩色显示让我们感觉非常方便,但有时可能不小心丢失这一功能,在配置文件中加入alias ls="ls --color -F -N"就能保证这一功能的正常使用。 

   利用cron保持某些分区的激活状态 

   cron相当于Win 98的计划任务,它能根据用户的要求定时执行某些命令。如果你mount了一些NTFS分区,并经常访问这个分区(如Web Server对一些文件的访问),很有可能因为时间过长而无法正确读写数据,这时可以利用cron的定时访问功能,保证该分区总是激活的。根据个人经验,网络上的NTFS分区最好让cron每15分钟访问一次,否则就有可能出现需要该分区数据时出现mount失败的情况。 

 


地主 发表时间: 09/29 10:05

论坛: UNIX系统

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号