Я хотів би скопіювати набір файлів з каталогу 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
, повторно.