Я хотел бы скопировать набор файлов из каталога A в каталог B с оговоркой, что если файл в каталоге A идентичен файлу в каталоге B, этот файл не должен копироваться (и, следовательно, время его модификации не должно быть обновлено). Есть ли способ сделать это с помощью существующих инструментов, без написания собственного сценария?
Чтобы немного рассказать о моем сценарии использования: я автоматически .cгенерирую группу файлов во временном каталоге (методом, который должен генерировать все из них безоговорочно), и когда я их заново генерирую, я хотел бы только скопировать те, которые превратились в фактический исходный каталог, оставляя неизменными (с их старым временем создания), чтобы makeзнать, что не нужно их перекомпилировать. (Однако не все сгенерированные файлы являются .cфайлами, поэтому мне нужно делать двоичные сравнения, а не текстовые сравнения.)
(Примечание: это выросло из вопроса, который я задал на https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , где я пытался чтобы ускорить файл сценария, который я использовал для выполнения этой операции, но мне пришло в голову, что я действительно должен спросить, есть ли лучший способ сделать это, чем написание собственного сценария - тем более, что любой простой способ сделать это в оболочке скрипт будет вызывать что-то вроде cmpкаждой пары файлов, и запуск всех этих процессов занимает слишком много времени.)
rsync -avncили длинный путь rsync --archive --verbose --dry-run --checksum.
diff -qr dirA dirBчтобы увидеть, какие файлы являются уникальнымиdirAиdirB, соответственно.