У меня есть два архива tar (сжатый или не сжатый), и я хочу найти все различия в двух архивах. Оба архива содержат полную файловую систему (т. Е. При распаковке, генерируют такие каталоги, как /bin
, /home
, /root
, /usr
, /var
, /etc
, ... надеюсь, вы поняли смысл). Я хочу иметь список из следующих:Как сравнить два архива tar (включая содержимое файла, новые/удаленные файлы, символические ссылки)?
- Новые файлы
- Удалены файлы
- Измененные файлы (содержимое файла, а не только размер)
- Изменены Symlinks (как относительные, так и абсолютные)
- Новые/удаленные симлинки
Я не могу просто распаковать эти архивы и использовать diff
, поскольку разница не будет корректно распознать абсолютную символическую ссылку s (поскольку они указывают на структуру файловой системы архива).
Есть ли другой способ сравнить содержимое двух архивов tar?
можно использовать питон перечислить содержимое каждого архива дегтя. На самом деле это не ответ; это направление использования. Для того, чтобы заставить его работать должным образом, требуется не тривиальное усилие. – Petesh
Если нет способа сделать это в одной строке, чем нет. Я просто хочу услышать информацию от экспертов, если такой инструмент существует или может быть объединен некоторыми стандартными инструментами unix. – Alex
Я не думал об этом, но 'rsync' обладает довольно хорошими рекурсивными возможностями сравнения. Таким образом, вы можете попробовать 'rsync -nPavH' и посмотреть, можете ли вы разумно разобрать его вывод. Кроме того, если это идет в правильном направлении, я думаю, есть также «librsync». –