rsync удаленный доступ только к локальным файлам старше определенного времени

379
Mike Dannyboy

Я хочу rsync с удаленного на локальные файлы, которые старше (или новее), чем определенное время.

Я видел ответы, которые говорят, find /src/path -mtime -1 | rsync ...но это работает, только если каталог виден локально. Поскольку он удаленный, он не виден.

Так как я могу запустить findна удаленном и rsync его результаты обратно на локальный?

0

1 ответ на вопрос

0
codedstructure

В rsync есть --list-onlyопция, которая предоставляет индекс удаленных файлов, включая метки времени:

$ rsync --list-only $REMOTE drwx------ 160 2018/09/04 12:55:12 . -rw-r--r-- 1,348 2018/09/04 12:52:33 .bash_profile -rw-r--r-- 55 2018/09/04 12:52:33 .bashrc ... 

Фильтрация в этом списке, чтобы выбрать только подходящие даты, а затем подача этого в последующий --files-fromаргумент rsync (который может ссылаться на stdin, используя --files-from=-), должна сделать эту работу.

Например, следующее будет rsync файлы с mtime между 2018-08-01 и 2018-08-07 на локальный компьютер (с соответствующими значениями $REMOTEи $LOCAL_PATH; примечание $5в команде awk относится к пятому столбцу - т.е. имя файла - из вывод rsync)

$ rsync --list-only $REMOTE | awk '/2018-08-0[1-7]/ ' | rsync --files-from=- $REMOTE $LOCAL_PATH 

Это не решает проблему использования спецификаторов -типа find's -mtime, но дальнейший анализ строки даты (например, использование date) может быть выполнен для расширения этого.

Похожие вопросы