У меня ситуация, когда у меня есть 2 больших дерева каталогов, an old
и a new
. Большинство файлов одинаковы, но некоторые отличаются и/или отсутствуют в старой версии. Я хотел бы найти способ автоматически создать файл tar, который содержит:
a) все файлы, new
которых нет в old
b) все файлы, которые отличаются между new
иold
Файлы, которые существуют только в , old
следует игнорировать. Символические ссылки необходимо поддерживать. «Различие» необходимо определять путем полного двоичного сравнения.
Как вы можете догадаться, я пытаюсь создать патч, чтобы одно дерево соответствовало другому. Возможно, уже есть инструмент для этого, или, возможно, мне нужно связать вместе несколько команд.
Я работаю в Ubuntu Linux.
решение1
Я нашел несколько идей наэта почтао том, как получить список файлов, которые отличаются. Я выбрал подход rsync с опцией --dry-run
:
rsync -rv --dry-run --size-only --links old/ new/
Получив список файлов, я вызвал tar с этими файлами. Это не решило полностью проблему дифференциации файлов только в одном месте от другого, но с некоторым ручным вмешательством я заставил это работать. Хотелось бы, чтобы я мог получить полностью автоматизированное решение, но мне удалось решить мою непосредственную проблему с помощью этих общих шагов.