3

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

Пример:

  • Package_1.1/ (старый)
  • Package_1.2/ (новый)
  • change_files/ (только измененные и новые файлы и каталоги)

changed_files будут каталогом, содержащим рекурсивную структуру только тех файлов, которые были добавлены или изменены в Package_1.2 по сравнению с Package_1.1)

Обновление: я пытался использовать:

cd Package_1.2
rsync -a -c --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

Однако были некоторые файлы, которые были немного изменены время копирования, но их содержимое было идентичным. (md5 выдает одинаковую контрольную сумму для каждого файла). Поэтому, хотя я думаю, что я близко использую эту команду, я все еще что-то упускаю.

1 ответ1

3

При использовании rsync кажется, что параметр -c (--checksum) не переопределяет параметр -t (--times) внутри -a (--archive), который использует -rlptgoD , и, таким образом, он все равно будет смотреть на файл. времена модификации.

Одним из возможных решений является использование: -rlpgoDc вместо -a . Команда будет выглядеть так:

cd Package_1.2
rsync -rlpgoDc --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

Возможно, это не самое элегантное решение, возможно, у кого-то есть лучшее представление о том, как rsync может выполнить всю работу самостоятельно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .