如何比较 Solaris 和 Linux 中的文件

如何比较 Solaris 和 Linux 中的文件

为了我们的测试目的,我想比较 Solaris 和 Linux 中存在的同一文件的内容。我有任何可用的工具。如果我想开发新工具,我该如何实现?

我们正在将项目从 Solaris 迁移到 Linux。我们希望通过比较它们来验证最终输出是否以二进制格式存在。这两个文件都存在于不同的系统中。请建议我如何进行比较。

答案1

Unix 和 Linux 有许多内置的文件比较工具。无论您使用什么工具,都需要访问 Solaris 上的文件和 Linux 上的文件 - 如何实现这一点是另一回事,但您可以将文件复制到一个系统或通过网络共享共享它们。

假设要比较的文件被视为
/linux/filename.txt

/solaris/filename.txt

您可以使用命令比较它们
diff /linux/filename.txt /solaris/filename.txt

对于二进制文件或不想通过网络传输的非常大的文件,可以使用校验和来确定文件是否相同。可以在文件所在的系统上生成md5校验和,然后可以复制结果进行比较。例如,要在 Solaris 上获取 md5 校验和,您可以使用 digest -a md5 filename

在 Linux 上,可以使用以下方法实现相同的效果

md5sum filename

结果可以复制粘贴或通过网络传输到一个系统。

如果将每个 md5 校验和放在文件中的新行中以查看它们是否全部相同,请使用 sort unique 命令。它将打印每个唯一的“md5 sum”,因此如果文件应该相同,那么您可以期望命令仅输出一行,例如
sort -u md5sum_results.txt

更新:由于您要将工作从 Solaris 迁移到 Linux,我建议采用以下通用方法。

  1. 在 Solaris 端创建备份。有太多的方法可以考虑所有这些,但 cpio 是我的首选,原因有很多,特别是因为它可以很好地处理奇怪的文件类型:
    find /source/directory | cpio -oV > /backup/data.cpio

  2. 检查该文件的校验和:
    digest -a md5 /backup/data.cpio

  3. 通过网络复制文件,也许使用:
    scp /backup/data.cpio user@linuxhost:/incoming

其他选项包括 NFS 安装和 rsync 以及许多其他方式。

  1. 在Linux端检查文件是否未被修改:
    md5sum /incoming/data.cpio

  2. 如果 MD5 校验和匹配,则提取备份:
    cd /target/directory; cpio -iV < /incoming/data.cpio

注意: scp 不太可能“损坏”您的文件。如果您确实跳过了校验和的检查,cpio 通常会(总是但不能绝对 100% 保证)捕获损坏)。 md5 校验和将增加您对文件的信心,但很少需要达到此级别。

相关内容