Есть ли способ позволить rsync
сравнивать только временные метки файлов и игнорировать их содержимое? Это включает в себя игнорирование размера файла. Просто отметка времени. Ничего, кроме отметки времени.
1 ответ
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 и т.д.).