Я пытаюсь сохранить копию набора файлов с удаленного сервера на моем сервере и делать это каждые 15 минут. Я хочу доставлять на сервер файлы, которые изменились за последние 15 минут (с момента последнего извлечения)
Файлы могут быть удалены или не удалены в конечном итоге с моего сервера резервного копирования, поэтому я не хочу rsync все файлы, потому что это будет повторно копировать файлы, которые я удалил, каждые 15 минут.
Чтобы добиться этого, каждые 15 минут я делаю rsync, который выбирает файлы, которые изменились за последние 15 минут, в crontab следующим образом:
*/15 * * * * rsync -av --files-from=<(ssh root@remote-server 'find /remote/directory -type f -name remote-server-files.* -mmin -15 -exec basename {} \;' ) root@remote-server://remote/directory /local/directory 2> /var/log/rsync_cron.log && echo "[$(date)] Remote files saved successfully" >> /var/log/rsync_cron.log
Когда я запускаю эту команду в оболочке, она работает просто отлично.
Однако, когда crontab запускает его, он выдает следующую ошибку: rsync: failed to open files-from file <(ssh root@remote-server find /remote/directory -type f -name remote-server-files.* -mmin -15 -exec basename {} \; ): No such file or directory
rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
Похоже, что crontab не раскрывает внутреннюю команду и не выполняет ее, чтобы получить список файлов.
Есть ли какой-нибудь сюрприз, чтобы crontab принял команду нормально? Я скорее не создаю скрипт для одной строки