我们倾向于使用
savevg 和
restvg 命令备份和恢复整个卷组。我们发现它们的效果很好,而且很欣赏将整个卷组的内容归档到单盒磁带的做法。它可以只恢复某些文件,这种灵活的做法也是十分有用的。
tar 命令
我们现在来研究某些通用性较强的 UNIX 命令。
tar 命令的目的是操作用
tar 命令创建的存档。与您先前看到的各种
restore 命令不同,
tar 可以用在所有的 UNIX 和大多数 Linux® 分发中。对于每位 UNIX 系统管理员而言,这是另一项应收入其指令库的命令。
tar 命令对存档进行操作,它既可以将文件写入您使用的任何存档存储媒介,也可以从该媒介获取文件。事实证明,它是在 UNIX 和 Linux 系统中最常用的数据备份实用程序。
表 3 提供了
tar 命令最常用的一些标志。
表 3. tar 命令的常用标志
| 标志 | 描述 |
| -c | 该标志会创建一个新的存档。 |
| -f | 该标志指定设备名称。 |
| -v | 该标志会列出每个处理的文件名称。 |
| -x | 该标志从存档中提取出由一个或多个文件参数指定的文件。 |
| -t | 这个文件按存档中文件的显示顺序列出这些文件。 |
- 要创建 /var/mydirectory 的存档,请使用:
| # tar -cvf /dev/rmt0 /var/mydirectory |
- 要恢复该目录,请使用:
| # tar -xvf /dev/rmt0 /var/mydirectory |
- 要查看该存档的内容,请使用:
| # tar -tvf /dev/rmt0 /var/mydirectory |
- 您还可以使用 tar 提取某些目录下的内容。该命令仅从设备 /dev/rmt0 中提取 /var 目录:
| # tar -xm -f/dev/rmt0 /var |
如果您想使用
tar 命令恢复空目录,您必须非常小心。您只有在同时使用
-d 标志和
-x 标志的情况下才能这样做。此外,由于在
tar 命令中对头块的空间有限制,大于 65,535 的用户编号 (UID) 和组标识编号 (GID) 在恢复到某些类型的系统时会受到损坏。大小限制只会影响所有权和权限,它不会对数据造成任何损害。
坦白地说,我们算不上是
tar 命令的忠实拥趸。我们常常使用它,而且它在提取文件和较小的目录方面表现不错,如果要恢复文件系统和卷组,我们更倾向于选用 cpio 作为更常用的工具,或是使用专用性更强的 AIX 实用程序。tar 最突出的特性在于它受到了广泛的认可,这在很大程度上要归功于它的易用性。几乎所有人都知道如何读取一个 tar 卷,即使他们不会,要给他们进行演示也是很容易的。
如果这个 tar 文件在磁盘上或是一个压缩的 tar 文件,那么即使是基于 Windows® 的程序(如 WinZip)也能自动解压缩并读取其中的内容。WinZip 无法对 cpio 进行解压缩。如果用 cpio,UNIX 和 Linux 平台之间的可移植性要好一些。
cpio 命令
cpio 与 tar 类似,是通用的 UNIX 归档实用程序之一。cpio 一般被用来复制和恢复文件及目录结构。
与许多人选择 Apple 而不是 Microsoft® 计算机类似,很多管理员也会选择 cpio,而不是 tar。我们先前已经讨论了一些原因,在这部分还将深入说明。在使用 cpio 之前,您必须了解它有什么限制:
- cpio 命令不能用于大于 2GB 的文件,这是由于 XPG/4 和 POSIX.2 标准限制所致。
- 对于分配空间较为分散的文件,cpio 不会保留其离散特性。在恢复之前其空间处于分散状态的文件,将根据文件大小在文件系统中分配到足够大的空间。请参阅表 4,了解常用的 tar 标志。
表 4. tar 命令的常用标志
| 标志 | 描述 |
| -B | 该标志将覆盖缺省的缓冲区大小 (512)。 |
| -d | 该标志会按需要创建目录。 |
| -i | 该标志会读取标准输入,由 cpio 创建一个存档文件。 |
| -p | 该标志会从标准输入读取文件路径名称,然后将这些文件复制到用目录参数命名的目录。 |
| -m | 该标志将保留以前的修改时间。 |
- 这个命令将当前的目录和它的所有文件和子目录复制到您的磁带驱动器:
| # find ./ -depth | cpio -ocvB >/dev/rmt0 |
- 要使用 cpio 进行恢复,请尝试:
| # cpio -icdumBv </dev/rmt0 |
首先确保您已转到您希望进行数据恢复的目标目录下。.如果原先内容备份时使用的是绝对路径,这并无妨碍,但如果它是用相对路径进行备份的,您就必须确保将它恢复到正确的位置。
与 tar 不同,cpio 还保留了硬链接,这对制作整个目录结构的备份而言是极为重要的。它总是恢复空目录,并缺省保留时间戳。我们用 cpio 进行恢复时从没出现过问题,但使用 tar 却偶有问题发生。与 dump 不同,cpio 无法:
- 在不使用 touch 文件的情况下执行增量备份。
- 在备份之后,使 atime 和 ctime 保持不变。
- 执行一个互动式的恢复,例如在 restore 命令中使用 -i 选项。
常常有人问我们,如果 cpio 比 tar 优越,为什么 tar 更流行?与前面提到的 Mac OS 与 Windows 之争这个古老话题类似,这很大程度上取决于使用的舒适度。大众青睐某一样东西,不代表流行度较低的那个版本就比前者要差。人们还会告诉您,tar 的一些非常基本的操作,也比在 cpio 中的同样操作更简单些。例如,每个版本的 tar 都支持
tar cf 设备和
tar xf 设备,而 cpio 有些版本支持
-I 和
-O 选项,有些则不支持。
如果您把所有不同版本的 cpio 选项加起来,您会发现它们的总数超过了 40 个。
[
本帖最后由 kaka_wang 于 2008-4-21 13:18 编辑 ]