3

Есть ли способ позволить rsync сравнивать только временные метки файлов и игнорировать их содержимое? Это включает в себя игнорирование размера файла. Просто отметка времени. Ничего, кроме отметки времени.

1 ответ1

5

Rsync не может сравнивать файлы, используя только метку времени. Он всегда будет сравнивать размер файла независимо, и если вы укажете -c он также будет сравнивать контрольную сумму файла.

Весь смысл rsync в том, чтобы одно дерево файлов соответствовало другому. Если файл в одном дереве имеет другой размер по сравнению с тем же файлом в другом дереве, то они должны, логически, отличаться. Rsync скопирует его. Несмотря на.

Если вы хотите скопировать файлы так, как вам нужно, вам придется использовать другой метод с использованием разных инструментов.

Если вы хотите копировать только те файлы, которые изменились после известной даты (скажем, в последний раз, когда вы копировали файлы), вы можете использовать флаг find -cnewer. Следующий небольшой скрипт найдет файлы, которые изменились с момента последнего запуска:

find /path/to/files -cnewer /tmp/lastSync
touch /tmp/lastSync

Параметр -cnewer сравнивает время изменения файла с указанным временем (в этом примере /tmp /lastSync):

-cnewer file
   File's  status  was last changed more recently than file was modified.  
   If file is a symbolic link and the -H option or the -L option is in 
   effect, the status-change time of the file it points to is always used.

Сенсорная команда обновит временную метку /tmp /lastSync, чтобы отразить тот факт, что скрипт только что был запущен, так что последующие запуски скрипта используют текущее время в качестве временной базы.

Выходные данные команды find могут затем использоваться для указания файлов, которые нужно скопировать в место назначения, используя любой метод, который вам нравится (cp, scp и т.д.).

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