如何在Linux服务器上做备份和恢复
2013-12-01 09:11:53 来源:华军科技数据恢复
进行一般的备份应该是负责任的系统管理者的最高优先考虑。虽然Linux 是一个高度可靠的作业系统,系统失效仍然可能发生。可能因为硬体故障,电源中断,或其他不可预料的问题。更常见的这 些问题是来自人为的错误,不当的变动,甚至因为删除重要的档案。如果您负责管理系统上的用户,一定可能常被要求重建因为不小心误删的档案。如果您进行一般备份,以每日为基础较好 (至少对更动频繁的使用者档案),您将会有助於减少档案的损失,并且增加复原程度。
最安全的备份方法是将他们纪录於不同的媒体中,例如磁带,抽取式硬碟,可写式 cd .等。 然後将您的备份和您的 Linux系统分开存放。有时候这可能并不实际 -- 也许在您可以存放备份磁带的地方没有防火室 ! 或是在第一优先的地点没有办法存取这样的外部备份系统。虽然如此,仍然可以进行备份,只是会受到一点限制。
在我服务的单位,我在几个 Linux 系统上进行备份。按情况的不同,有些备份存放在磁带,其他则写入位於网路上的不同伺服器中,然而有一些仍然使用 cron 自动作业 (可能因为伺服器位在远端,在那里每天进行磁带备份是不切实际或不可能的),简单的放在分别不同磁碟上的分割区中 (例如,放在 "/archive/" 档案系统) 。
在家里,我没有外部的备份系统,我也没有大量的磁碟空间去存放备份影像档。因此,我改为只备份在"/home/" 的我的使用者档案,同样的还有一些在 "/etc/"的自订设定档,将备份存放在分别不同的磁碟分割区中伺服器备份程序。
进行Linux备份有几种不同的方法,其中包括所有 Linux 发行版本中都有的命令列工具,例如 "dd","dump","cpio"以及 "tar"。其他还有文字型态工具,例如 "Amanda" 及 "Taper",这些是被设计来在备份及回存过程中加入更友善的使用者介面。当然也有图形介面的工具,像是"KDat"。最後,还有商业化的备份工具,像是 "BRU" 和 "PerfectBackup+"。这些备份计划中任何之一都足以提供您宝贵资料的保护。
这里有一些包括哪里可以获得工具的列表,可以在“Linux Applications and Utilities Page"找到,位於http://www.xnet.com/~blatura/linapp2.html#back. 当决定好备份方式,您可能要考虑下列几点因素:
可携性 - 备份的可携性 (亦即. 从一个 Linux 发行版本或应用 Unix备份然後回存到另外一个; 例如从Solaris 到 Red Hat Linux) 对您而言是否重要 ? 如果是,可能想要选择一个命令列的工具 (亦即. "dd","dump", "cpio", 或 "tar"),因为您可以相当地确定该工具可以在另一个 *nix 系统上找到。
无人或自动备份 - 定期自动进行备份而不需人力介入之能力,对您而言是否重要 ? 如果是,您可能需要能支援该方案的工具及备份媒体。
使用者友善 - 使用者友善的介面对您而言是否重要 ? 如果是,您可能想要选择一个文字或图形介面的工具。商业的应用程式可以提供最简便的介面及技术支援。
远端备份 - 从远端机器进行备份及回存的能力对您而言是否重要 ? 如果是,您可能想要选择命令列或文字模式的工具而不是图形介面(除非您有相当快的网路连结及执行远端 X sessions 的能力)。
网路备份 - 从网路主机进行备份及回存对您而言是否重要 ? 如果是,您可能要用一些支援从网路存取备份设备的命令列工具(像是 "tar"),或是专用工具程式例如 "Amanda" 或是一些商业工具程式。
媒体型态 - 备份可以储存在很多不同的媒体,像是磁带,外接式硬碟,ZIP 磁碟,或可读写 CD。考虑售价及可靠性,储存容量,及传送速度。
警告: 当备份您的系统时, 不要包括 "/proc" 伪档案系统 ! /proc 中的档案并非真的档案,而仅是看起来像档案的描述,而且指向核心资料结构的连结。备份 "/proc/kcore" ,这事实上这是一个伪装档案,包含记忆体中所有的资料,会浪费很多的磁带 ! 您可能也需要避免备份 "/mnt" 档案系统,除非您有从 CD-ROM,软碟机,网路分享档案,或其他安装设备上备份的特殊需求。
明显地,备份及回存的过程会因您所选择的备份方法而有所不同。然而,在这一节,我将会讨论我最常使用的两种工具备份的方法 : "tar" (其名称源於“Tape ARchiver"),这是一个命令列式的工具,在 *nix 系统中具有很高的可携性 ; 以及 "KDat",一个来自於 KDE 套件的图形介面磁带备份工具。
最後,我应该补充一点,依您所选择的备份方式,即使该工具没有建立於自动备份时间表上的能力,您仍然可以利用 cron 功能进行该自动备份。 参考使用Cron 和 Crontab 档进行自动作业 有关使用 cron 的细节以及如何建立 crontab 行程表档案。
使用 "tar"备份:如果您选择 "tar" 作为您的备份方案,您可能要花点时间去了解种种的指令选项 ; 键入 “man tar" 有更深入的明细。您还需要了解如何存取适当的备份媒体 ; 虽然在 Unix 的世界中对待所有的装置就像处理档案一样,如果您写入到一个字元设备像是磁带,“档案"的名称就是设备本身的名称 (亦即. "/dev/nst0" 是一个SCSI介面的磁带机)。
下面的指令会将您的整个 Linux 系统备份於 "/archive/" 档案系统,除了 "/proc/" 伪装档案系统,"/mnt/", "/archive/" 档案系统 (没必要备份我们的备份档 !),还有 Squid 很大的快取资料档 (是的,依我之见,浪费备份媒体而且不需要去备份)之外的任何已挂载的档案系统 :
tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz
--directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid .
不要被上面的指令吓到 ! 当我们将其分为两部分,您将会发现这个强力工具之美。
上列的指令指定了选项 "z" (压缩; 备份资料经由 "gzip"压缩),"c" (建立; 一个 archive 档开始被建立),"v" (verbose; 显示出已经备份好的档案),"p" (允许保存;保护的资料将会被 “记忆" ,可以被回复)。"f" (档案) 选项後面接的是的要写入的 archive 档 (或装置)名称,注意包含资料的档名是如何得到的,只要用两个後引号将"date" 指令圈起来。 一般的命名惯例是在未压缩过的档案後面加上 " .tar" ,压缩的档案加上 "tar.gz" "--directory" 选项告知 tar 在开始备份前首先跳到以下的档案路径 ( 在本例中是"/"目录 )。 "--exclude" 选项告知 tar 不要备份所指定的档案或目录。最後,"." 符号告知 tar 要备份目前目录中的所有东西。
注意: 有一点很重要必须了解的就是 tar 的选项是大小写不同的 ! 此外,大部分的选项可以用助记符号加以简化(亦即. "f"),或者使用较易记忆的选项全名 (亦即. "file")。 助记符号前用一个"-" 字元作为字首作为辨识,在全名的前面有两个这种符号的字首。参考 “man"页以得到更多有关使用 tar 的资讯。
另一个例子,这一次只有写入指定的档案系统 (和上一个除了例外全部写入的例子相反) 到一台 SCSI 的磁带机 :tar -cvpf /dev/nst0 --label="Backup set created on `date '+%d-%B-%Y'`." --directory / --exclude=var/spool/ etc home usr/local var/spool
在上面一行的选项,注意没有用到 "z" (压缩) 选项。我强烈建议反对写入压缩资料到磁带上,因为如果磁带上资料有一部份损坏,您会失去整个备份 ! 然而,未压缩的储存的 archive 档具有很高的可恢复性,即使磁带上的档案有一部份损毁。
因为磁带机是一个字元设备,没有办法指定一个确实的档名。因此,指定给 tar 的档名可简化为装置名称,"/dev/nst0",是在 SCSI 排汇上的第一个磁带设备。
注意: "/dev/nst0" 设备在备份做好後不会回带 ; 因此有可能将好几组备份写到同一磁带。(您也可以选择"/dev/st0"这个装置,在这种情形磁带在备份完後会自动回带)
既然我们无法对一套备份指定档名,"--label" 选项可以来写进档案本身一些有关这一套备份的资讯。
最後,只有包含在 "/etc/", "/home/", "/usr/local", 及 "/var/spool/" (除了 Squid 的 快取资料档)会写进磁带。
当使用磁带时,可以使用下列命令回带,以及退出磁带:
mt -f /dev/nst0 rewind
mt -f /dev/nst0 offline
小技巧: 您将会发现到当 archive 档建立时,前面的"/" (斜线) 符号会被 tar 去除。这是 tar 的预设操作模式, 这是故意用来保护您避免覆写这些重要档案的原先版本,以防万一您不慎在重建过程中覆写了不正确的档案。
如果您真的不喜欢这个特性 (记住,这是特性!) 您可以指定 tar "--absolute-paths" 选项,这样会保留前面的斜线。然而,我不建议这样做,因为很危险 !
使用"KDat"备份: 如果您使用 KDE 桌面环境,我相信您会发现"KDat" 公用程式不但强大而且对使用者很友善。此外,另一个好处是KDat 利用"tar" 作为其备份 engine。因此,用 KDat 写入的备份组不但可以用 KDat 读取,也可以用 tar ! 这使得 KDat 成为在使用者友善及备份可携性中很好的选择。
小技巧: 即使您决定不使用也不安装完整的 KDE 套件,如果您安装了 Qt 函式馆就仍然可以使用KDE。
当您第一次执行 KDat,您需要建立一个备份 profile。这个 profile 告诉 KDat 您想要备份系统中的哪些档案。如果您要的话,您可以建立好几个备份 profile,依照您的需求 (例如,您可以建立一个 profile 叫做“Full Backup"作系统的完全备份,或是 “Quick Backup"只备份使用者的档案)。
要建立备份 profile,可以选择从选单栏中“File"选项选择“Create Backup Profile" (或在“Backup Profiles"文件夹上按滑鼠右键,然後选择 “Create Backup Profile")。在右手边的是 KDat 视窗,您可以改变各种设定,像是profile 名称,archive 名称,tar 选项,以及其他的。单击 “Help" 选单有关於这些设定的用途说明。
要指定哪些档案应该包含在您的 backup profile,在 "/" 目录文件夹旁的核对图示上敲一下左键。这会确定所有的档案及这个目录下所有东西都会备份。然後,在文件夹旁的小 "+"符号上敲一下左键,资料夹会展开,显示档案及以下的目录。您可以排除掉所不想备份的档案;只要在您想排除的每一个档案或目录旁的核对符号上敲一下左键。例如,一个完全备份应该包含已标记的所有档案及目录,要排除 "/proc" (一个伪装档案系统,包含您目前运作系统的资料),"/mnt" ( 位於CD-ROM下面的目录,软碟机,网路分享常被挂载在此),而且如果您是