为了我们的测试目的,我想比较 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,我建议采用以下通用方法。
在 Solaris 端创建备份。有太多的方法可以考虑所有这些,但 cpio 是我的首选,原因有很多,特别是因为它可以很好地处理奇怪的文件类型:
find /source/directory | cpio -oV > /backup/data.cpio
检查该文件的校验和:
digest -a md5 /backup/data.cpio
通过网络复制文件,也许使用:
scp /backup/data.cpio user@linuxhost:/incoming
其他选项包括 NFS 安装和 rsync 以及许多其他方式。
在Linux端检查文件是否未被修改:
md5sum /incoming/data.cpio
如果 MD5 校验和匹配,则提取备份:
cd /target/directory; cpio -iV < /incoming/data.cpio
注意: scp 不太可能“损坏”您的文件。如果您确实跳过了校验和的检查,cpio 通常会(总是但不能绝对 100% 保证)捕获损坏)。 md5 校验和将增加您对文件的信心,但很少需要达到此级别。