LINUX.ORG.RU

Сравнение контента в директории

 ,


0

1

Есть 2 директории, которые по большей части должны мало различаться. Одна директория с одной версией контента, другая - с более новой. Существует ли какая-нибудь утилита с помощью которой можно вывести список файлов, изменения которых отвечают за изменения контента в версиях? Также неплохо чтобы был вывод обыкновенного перемещения одного и того же файла в директории со сменой версии.

★★★★★

В krusader это называется «синхронизировать директории», кажется. Помню в тотал командере было такое же.

orm-i-auga ★★★★★ ()

Нашёл:

rsync -rvnc --delete dir-old/ dir-new

Осталось понять как отслеживать банальные переименования.

ados ★★★★★ ()

2 директории, которые по большей части должны мало различаться

Любой VCS

утилита с помощью которой можно вывести список файлов

diff

Также неплохо чтобы был вывод обыкновенного перемещения одного и того же файла в директории

Git

Вообще, Git в этом плане очень удобен. Учитывая, что инициализация репозитория занимает совсем ничего, можно инициализировать обе диры, смержить их в третьей, и сформировать патч. Дело пяти минут даже для того, кто Git в глаза не видел.

r3lgar ★★★★★ ()
Ответ на: комментарий от anonymous

Это даёт как-то понять, откуда куда один и тот же файл переместился от версии к версии?

ados ★★★★★ ()
Ответ на: комментарий от r3lgar

А вот если я получаю контент оттуда где git не используется и для перемещения файла не используется git mv, то перемещение одного и того же файла отследить нельзя?

ados ★★★★★ ()
Ответ на: комментарий от ados

Увы, да. Вообще, чтобы корректно отследить изменения, нужно, чтобы эти изменения мониторились в процессе изменения, иначе нужно будет провести тонны проверок и сравнений, чтобы вычислить уже сделанные изменения.

r3lgar ★★★★★ ()
Ответ на: комментарий от r3lgar

Да ну. Мне задача такой сложной не кажется: составить от каждого файла список хешей и размеров; потом от каждой версии попарно сравнить и если будут где-то совпадения - там и пустить побитовое сравнение для надёжности. Вроде проделать такое за приемлемое время - задача не сложная даже для далеко не самых производительных современных машин.

ados ★★★★★ ()
Ответ на: комментарий от ados

составить от каждого файла список хешей и размеров; потом от каждой версии попарно сравнить и если будут где-то совпадения

А если помимо переименования/перемещения будут изменения? Тогда ты уже не отследишь кем был этот файл в предыдущей версии, особенно, если изменения были серьёзные.

пустить побитовое сравнение для надёжности

Достаточно будет diff -Naur, но это всё равно придётся глазами пробегать каждый дифф, а это долго, особенно, если контент жирный и изменения серьёзные.

Вроде проделать такое за приемлемое время - задача не сложная даже для далеко не самых производительных современных машин.

Автоматизированная система, если она не отслеживала жизнь файла/диры, ничего конкретного не даст, максимум, что можно добиться — процент совпадения, но никак не отслеживание перемещения файлов пост-фактум.

r3lgar ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.