gzip は、-l および -v オプションを指定すると、次のように各ファイルのチェックサムを提供します。
$ echo foo > foo
$ gzip foo
$ gzip -lv foo.gz
method crc date time compressed uncompressed ratio uncompressed_name
defla 7e3265a8 Dec 10 17:37 28 4 150.0% foo
同じチェックサムを取得できる外部ツールはありますか?
md5sum
、同様の役割cksum
をsum
果たしますが、一致するコードを与えません (3915528286 の 16 進数は e962385e です)。
$ echo foo > foo
$ md5sum foo
d3b07384d113edec49eaa6238ad5ff00 foo
$ cksum foo
3915528286 4 foo
$ sum foo
00106 1
アプリケーションの詳細:
多くの大きなファイルを含むファイルシステムがあり、新しいファイルが継続的にコピーされます。着信ファイルの一部は既存のファイルと一致します。この場合、ディスク容量を節約するために、既存のファイルを単純にハードリンクしたいと考えています。解凍されたファイルの場合、md5sum はこの比較を迅速かつ効率的に行うのに役立ちます。一方、gzip されたファイルは、同じデータに対して異なる md5sum を持つことがよくあります (タイムスタンプまたは所有者が原因で、このアプリケーションでは関係ありません)。gzip は内部データのチェックサムを提供するので、2 つの gzip ファイルについて、チェックサムとサイズのリストを単純に比較できます。
また、gzip ファイルと「通常の」ファイルの比較もサポートしたいと考えています。その場合、gzip から外部で同じチェックサムを生成するユーティリティが必要です。簡単な解決策は、比較する前に常にプレーン ファイルを gzip することだと思いますが、これは回避したいオーバーヘッドです。現在、システムは CPU 時間によってボトルネックになっているからです。