Я сравниваю удаленную папку с локальной папкой и копирую только различия файлов в новую папку.
Вот что я использую:
rsync -ac --compare-dest=/folder/ rsync://remote/folder/ new-folder/
Моя проблема в том, что он также копирует файлы, в которых атрибут, как в моем случае, отличается от времени модификации.
Сначала я подумал --checksum
исправит мою проблему, но, как указано на странице руководства Rsync:
--compare-dest=DIR
Если в DIR найден файл, идентичный файлу отправителя, он НЕ будет передан в каталог назначения ... Если найдено совпадение, которое отличается только атрибутами, создается локальная копия и атрибуты обновляются....
Есть ли способ опустить часть проверки атрибутов? Другими словами, синхронизировать файлы только в том случае, если их контрольная сумма отличается?
Примечание: Я хочу сохранить атрибуты, если контрольная сумма файла отличается (--archive
).
Редактировать: На данный момент я выбрал обходной путь: сначала проиндексировал различия с помощью пробного запуска.
rsync -acn --out-format="%n" rsync://remote/folder/ /folder/ > index_file
sed -i '/\/$/d' index_file # Ignore folders
И затем синхронизировать только те
rsync -a --files-from=index_file rsync://remote/folder/ new-folder/
Но мне все еще интересно, можно ли добиться того же за один раз с помощью чего-то вроде --compare-dest
.