テストの目的で、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」を印刷するため、ファイルが同じである必要がある場合は、コマンドが1行だけ出力することを期待できます。
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チェックサムはファイルの信頼性を高めますが、このレベルはほとんど必要ありません。