Контролируете ли вы создание этих tar-файлов?
Если это так, то лучший способ - создать контрольную сумму MD5 и сохранить ее в файле в самом архиве. Затем, когда вы хотите сравнить два файла, вы просто извлекаете эти файлы контрольной суммы и сравниваете их.
Если вы можете позволить извлечь только один файл tar , , вы можете использовать опцию --diff
tar
, чтобы искать различия с содержимым другого файла tar.
Еще один грубый трюк , если у вас все в порядке с сравнением имен файлов и их размеров .
Помните, что это не гарантирует, что другие файлы одинаковы!
выполнить tar tvf
, чтобы составить список содержимого каждого файла и сохранить результаты в двух разных файлах. затем нарежьте все, кроме имени файла и столбцов размера. Желательно сортировать два файла тоже. Затем просто выполните файл diff между двумя списками.
Просто помните, что эта последняя схема на самом деле не выполняет контрольную сумму.
Пример tar и вывода (в этом примере все файлы имеют нулевой размер).
$ tar tvfj pack1.tar.bz2
drwxr-xr-x user/group 0 2009-06-23 10:29:51 dir1/
-rw-r--r-- user/group 0 2009-06-23 10:29:50 dir1/file1
-rw-r--r-- user/group 0 2009-06-23 10:29:51 dir1/file2
drwxr-xr-x user/group 0 2009-06-23 10:29:59 dir2/
-rw-r--r-- user/group 0 2009-06-23 10:29:57 dir2/file1
-rw-r--r-- user/group 0 2009-06-23 10:29:59 dir2/file3
drwxr-xr-x user/group 0 2009-06-23 10:29:45 dir3/
Команда для создания отсортированного списка имен / размеров
$ tar tvfj pack1.tar.bz2 | awk '{printf "%10s %s\n",$3,$6}' | sort -k 2
0 dir1/
0 dir1/file1
0 dir1/file2
0 dir2/
0 dir2/file1
0 dir2/file3
0 dir3/
Вы можете взять два таких отсортированных списка и сравнить их.
Вы также можете использовать столбцы даты и времени, если это работает для вас.