我正在使用 Solaris 11.3,希望偶尔将一堆大型虚拟机和磁盘映像直接备份到从 Ebay 购买的二手 LTO6 磁带驱动器,但即使 Solaris TAR 有“E”标志允许文件大小 > 8GB,这也是对我来说没有用,因为无论哪种方式,我都知道如果从磁带读取时遇到介质错误,TAR 就会中止,所以我不想使用它。 CPIO 显然会继续下去,PAX 也会继续,但这两个不能处理超过 8GB 的文件,并且已被弃用,因此永远不会这样做。
是否有任何 CPIO 的后继者可以完成 CPIO 所做的一切,而且还可以备份 > 8GB 的文件?或者仍然会继续使用 TAR 替代品?我对可移植性不感兴趣,所以不关心使用什么存档格式,只要我可以恢复并执行正确存档程序所做的常规操作,例如保留时间戳等。
我可能需要安装 Amanda 或 Bacula 才能完成这项工作,因为我对 *nix 比较陌生,并且发现没有现成的命令行程序可以在任何其他 UNIX 或 Linux 变体中执行此操作,这令人惊讶,因为阅读net 我看到人们在世纪之交后不久就抱怨这个问题和之前的 2GB 限制。
答案1
您对 cpio 的大小假设是正确的,但请注意 cpio 不是单一格式,而是四甚至具有不同约束的更完全不兼容的格式。这就是cpio
标准宣布该格式已过时的原因。对于 cpio 格式的每一次增强,您都需要创建另一种不兼容的格式,因此 cpio 还没有为未来做好准备。
由于 cpio 格式未被阻止,因此在读取错误后重新同步读取器非常困难且容易出错。所以不建议使用cpio进行归档。无论如何,您关于 cpio 错误恢复的说法与 cpio 本身无关,而是与 AT&T 实现相关,因此请注意 GNU 实现....您引用的功能没有文档记录,类似于 Sun/AT&T cpio 可能是用于替换正在运行的程序的二进制文件而不会引起问题。后者是您star -install
作为记录功能获得的。
另一方面,TAR 是一种可以增强的格式(得益于 POSIX 在 2001 年根据 Sun Microsystems 的提案在 2001 年标准化了新的增强型 tar 格式),可以在未来不会出现不兼容问题的情况下进行增强。
如果磁带上出现读取错误,则内核驱动程序是否允许您读取该问题是值得怀疑的。但我刚刚检查了Sun cpio,它似乎在内部将EIO转换为某种不返回数据的EOF。这里的主要问题是Sun cpio似乎不记得它的上层存在这样的问题。
如果您想获得类似于 cpio 的功能,我建议使用以下内容:
sdd if=/dev/rmt/0 bs=126k -noerror try=0 | star -xp -i
将 126k 替换为磁带的块大小并使用正确的 if= 参数。
一些进一步的说明:
gtar
能够进行备份,但经常无法恢复自己的档案。例如,当您使用gtar
两个增量备份之间存在重大差异的增量备份时,就会发生这种情况。
star
opencsw 并不是最近才出现的。我建议从以下位置的包编译最新版本schilytools
:
http://sf.net/projects/schilytools/files/
一般来说,schilytools 的更新频率通常为每两周一次。
star 的当前手册页位于:
http://schilytools.sourceforge.net/man/man1/star.1.html
也可以看看