Как сравнить два тарболла - PullRequest
28 голосов
/ 23 июня 2009

Я хочу сказать, содержат ли два архивных файла одинаковые файлы с точки зрения имени файла и содержимого файла, не включая метаданные, такие как дата, пользователь, группа.

Однако существуют некоторые ограничения: Во-первых, у меня нет контроля над тем, включены ли метаданные при создании файла tar. Фактически, файл tar всегда содержит метаданные, поэтому прямая разность двух файлов tar не работает. Во-вторых, так как некоторые tar-файлы настолько велики, что я не могу позволить себе распаковать их во временный каталог и разослать содержащиеся в них файлы один за другим. (Я знаю, могу ли я распаковать файл file1.tar в файл file1 /, я могу сравнить их, вызвав tar -dvf file2.tar в файле /. Но обычно я не могу позволить себе распаковать даже один из них)

Есть идеи, как я могу сравнить два файла tar? Было бы лучше, если бы это можно было выполнить в сценариях SHELL. В качестве альтернативы, есть ли способ получить контрольную сумму каждого подфайла, не распаковывая архив?

Спасибо

Ответы [ 11 ]

0 голосов
/ 09 мая 2013

Если вы не извлекаете архивы и не нуждаетесь в различиях, попробуйте diff s -q option:

diff -q 1.tar 2.tar

Этот тихий результат будет "1.tar 2.tar отличается" или ничем, если нет различий.

...