在 Linux 中执行备份有多种方法。这些方法包括每个 Linux 发行版都包含的命令行工具,例如 ``dd''、``dump''、``cpio'' 以及 ``tar''。此外,还有基于文本的实用程序,例如 ``Amanda'' 和 ``Taper'',后者旨在为备份和恢复流程添加更友好的用户界面。也有基于 GUI 的实用程序,例如 ``KDat''。最后,还有商业备份实用程序可用,例如 ``BRU'' 和 ``PerfectBackup+''。这些备份解决方案中的任何一种都可以为您的宝贵数据提供保护。
一些可用工具的简要列表,包括它们的获取位置,可以在 “Linux 应用程序和实用程序页面” 上找到,网址为 http://www.xnet.com/~blatura/linapp2.html#back。在决定备份解决方案时,您需要考虑以下因素
可移植性 - 备份可移植性(即,在一个 Linux 发行版或 Unix 实现上备份,并在另一个发行版或实现上恢复的能力;例如从 Solaris 到 Red Hat Linux)对您来说重要吗? 如果是这样,您可能需要选择命令行工具之一(例如 ``dd''、``dump''、``cpio'' 或 ``tar''),因为您可以合理地确定这些工具将在任何 *nix 系统上都可用。
无人值守或自动备份 - 自动执行备份的能力,以便可以在无需人工干预的情况下定期执行备份,这对您来说重要吗? 如果是这样,您将需要选择工具和备份介质,它们都将支持这种备份方案。
用户友好性 - 用户友好的界面对您来说重要吗? 如果是这样,您可能需要选择提供基于文本或 GUI 界面的工具。 商业实用程序可能会提供最简单的界面以及额外的技术支持。
远程备份 - 从远程计算机启动备份和恢复的能力对您来说重要吗? 如果是这样,您可能需要选择命令行工具或基于文本的实用程序,而不是基于 GUI 的实用程序(除非您有相当快的网络连接以及运行远程 X 会话的能力)。
网络备份 - 执行与联网主机之间的备份和恢复对您来说重要吗? 如果是这样,您可能需要使用几种命令行实用程序之一(例如 ``tar''),它们支持对备份设备的网络访问,或者使用专门的实用程序,例如 ``Amanda'' 或几种商业实用程序之一。
介质类型 - 备份可以存储在各种介质上,例如磁带、额外的硬盘驱动器、ZIP 驱动器或可重写 CD。 考虑成本与可靠性、存储容量和传输速度。
注意 |
注意:备份文件系统时,不要包含 ``/proc'' 伪文件系统! /proc 中的文件实际上不是文件,而只是描述和指向内核数据结构的类文件链接。 备份像 ``/proc/kcore'' 这样的文件,它实际上是一个包含您整个内存内容的伪文件,在我看来,这似乎是对磁带的巨大浪费! :-) 您可能还需要避免备份 ``/mnt'' 文件系统,除非您有备份 CD-ROM 设备、软盘驱动器、网络文件共享或其他已挂载设备中的文件的特殊愿望。 |
显然,执行备份和恢复的流程将因您选择的备份解决方案而异。但是,在本节中,我将讨论使用我最常用的两个工具执行备份的方法:``tar''(其名称代表 “磁带归档器”),这是一种主要在 *nix 系统之间可移植的命令行备份工具;以及 ``KDat'',这是一种基于 GUI 的磁带备份实用程序,它包含在 KDE 软件包中(有关 KDE 的更多信息,请参见第 5.6 节)。
最后,我应该补充一点,根据您选择的备份解决方案,即使该工具没有内置计划自动或无人值守备份的功能,您也可以通过使用 cron 工具来自动化此类备份。 有关使用 cron 和创建 crontab 计划文件的详细信息,请参见第 9.4 节。
如果您决定使用 ``tar'' 作为备份解决方案,您可能应该花时间了解可用的各种命令行选项;键入 “man tar” 以获取完整列表。 您还需要知道如何访问适当的备份介质;尽管在 Unix 世界中所有设备都被视为文件,但如果您要写入字符设备(如磁带),则 “文件” 的名称就是设备名称本身(例如 ``/dev/nst0'' 用于基于 SCSI 的磁带驱动器)。
以下命令将把您的整个 Linux 系统备份到 ``/archive/'' 文件系统,但排除 ``/proc/'' 伪文件系统、``/mnt/'' 中任何已挂载的文件系统、``/archive//archive/
tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz \ --directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid . |
'' 文件系统(备份我们的备份集毫无意义!),以及 Squid 相当大的缓存文件(在我看来,这是对备份介质的浪费,并且没有必要备份)
不要被上面命令的长度吓倒! 当我们将其分解为各个组成部分时,您将看到这个强大实用程序的魅力。上面的命令指定了选项 ``z''(压缩;备份数据将使用 ``gzip'' 压缩)、``c''(创建;正在创建归档文件)、``v''(详细;在备份文件时显示文件列表)、``p''(保留权限;文件保护信息将被 “记住”,以便可以恢复它们)。 ``f''(文件)选项声明紧随其后的参数将是要写入的归档文件(或设备)的名称。 请注意,包含当前日期的文件名是如何派生的,只需将 ``date'' 命令用两个反引号字符括起来即可。 常用的命名约定是为未压缩的归档文件添加 ``tar'' 后缀,为压缩的归档文件添加 ``tar.gz
'' 后缀。/``--directory'' 选项告诉 tar 首先切换到以下目录路径(本例中为 ``
/
'' 目录),然后再开始备份。 ``--exclude'' 选项告诉 tar 不要费心备份指定的目录或文件。 最后,``.'' 字符告诉 tar 它应该备份当前目录中的所有内容。
tar -cvpf /dev/nst0 --label="Backup set created on `date '+%d-%B-%Y'`." \ --directory / --exclude=var/spool/ etc home usr/local var/spool |
注意: 注意:重要的是要意识到 tar 的选项是区分大小写的! 此外,大多数选项可以指定为单个助记字符(例如 ``f'')或更易于记忆的完整选项名称(例如 ``file'')。 助记表示形式通过在它们前面加上 ``-'' 字符来标识,而完整名称则以两个这样的字符为前缀。 同样,有关使用 tar 的信息,请参见 “man” 页面。
另一个示例,这次仅将指定的文件系统(而不是像上面的示例中那样写入所有文件系统并排除例外项)写入 SCSI 磁带驱动器,如下所示/dev/nst0在上面的命令中,请注意未使用 ``z''(压缩)选项。 我强烈建议不要将压缩数据写入磁带,因为如果磁带某部分上的数据损坏,您将丢失整个备份集! 但是,即使磁带归档文件的某些部分损坏,未压缩存储的归档文件也具有非常高的非受影响文件恢复能力。
由于磁带驱动器是字符设备,因此无法指定实际的文件名。 因此,用作 tar 参数的文件名只是设备名称,``/dev/nst0/dev/nst0'',SCSI 总线上的第一个磁带设备。注意: 注意:``
/dev/nst0
'' 设备在写入备份集后不会倒带;因此可以在一个磁带上写入多个集。(您也可以将设备称为 ``/dev/st0'', ``'',在这种情况下,磁带会在写入备份集后自动倒带。)'', ``由于我们无法为备份集指定文件名,因此可以使用 ``--label'' 选项将有关备份集的一些信息写入归档文件本身。最后,只有 ``/etc//home/
/usr/local
mt -f /dev/nst0 rewind mt -f /dev/nst0 offline |
'' 和 ``//var/spool/''(但排除 Squid 的缓存数据文件)中包含的文件会写入磁带。使用磁带时,可以使用以下命令来倒带,然后弹出磁带
/
''(斜杠)字符。 这是 tar 的默认操作模式,它旨在保护您在恢复操作中错误地恢复错误文件时,不会用这些文件的旧版本覆盖关键文件。 如果您真的不喜欢这种行为(请记住,这是一个功能!),则可以指定 ``
--absolute-paths
'' 选项给 tar,这将保留前导斜杠。 但是,我不建议这样做,因为它很危险!
8.1.2. 使用 ``KDat'' 进行备份/如果您正在使用 KDE 桌面环境,我相信您会发现 ``KDat'' 实用程序既强大又用户友好。 此外,一个额外的优点是 KDat 使用 ``tar'' 作为其备份引擎。 因此,使用 KDat 写入的备份集不仅可以使用 KDat 读取,还可以使用 tar 读取! 这使得 KDat 成为用户友好性和备份可移植性的绝佳选择。/proc提示: 提示:即使您选择不使用也不安装完整的 KDE 软件包,只要您安装了 Qt 库,您仍然可以使用 KDat。/mnt首次运行 KDat 程序时,您需要创建一个备份配置文件。 这样的配置文件告诉 KDat 您要备份系统上的哪些文件。 如果需要,您可以根据自己的需要创建多个备份配置文件(例如,您可以创建一个名为 “完整备份” 的配置文件用于完整系统备份,创建一个名为 “快速备份” 的配置文件仅用于备份用户文件)。要创建备份配置文件,请从菜单栏上的 “文件” 选项中选择 “创建备份配置文件”(或右键单击 “备份配置文件” 文件夹,然后选择 “创建备份配置文件”)。 在 KDat 窗口的右侧,您可以更改各种设置,例如配置文件名称、归档名称、tar 选项以及其他设置。 单击 “帮助” 菜单以获取有关这些设置用途的更多信息。要指定应包含在备份配置文件中的文件,请左键单击 ``
/
'' 目录文件夹旁边的复选框。 这将启用此目录及其以下的所有文件进行备份。 然后,左键单击文件夹旁边的小 ``+'' 号。 这将展开文件夹,显示其及其以下的文件列表。 这将允许您排除任何您不希望备份的文件;只需左键单击您要排除的每个文件或目录旁边的复选框即可。 例如,完整备份可能应该选中每个文件和目录,但 ``
/proc
''(包含有关您正在运行的系统的信息的伪文件系统)、``
/mnt
''(CD-ROM 驱动器、软盘和网络共享通常挂载在其下的目录),以及,如果您是 Squid 用户,则 ``
上页 | /var/spool/squid | 下页 |
''(Squid 的缓存数据文件)除外。 选择好适当的文件后,左键单击您正在创建的备份配置文件,然后左键单击 “文件 >>” 按钮,将选定的文件列表移动到您的备份配置文件。 | 注意: 注意:如果您的服务器数据大小大于磁带可以物理存储的大小,则您需要创建单独的备份配置文件,每个备份集对应一个。 | 要实际执行备份,请将磁带插入驱动器,然后从 “文件” 菜单中选择 “挂载磁带”(或左键单击看起来像磁带的图标)。 这将 “挂载” 磁带(实际上,由于磁带设备是字符设备,因此实际上无法挂载它——KDat 实际执行的操作是首先倒带磁带,尝试读取标头信息,如果成功,则在您的硬盘驱动器上找到相应的磁带索引。 否则,KDat 将提示您格式化磁带。 |