如何作为守护进程运行此 rsync(仅当文件更改时触发)

如何作为守护进程运行此 rsync(仅当文件更改时触发)

我有多个文件夹,现在使用 cron 进行 rsync,如本例所示。

rsync -aq source1/  user1@machine1:/some/destination1
rsync -aq source2/  user2@machine2:/some/destination2
... and so on

一切都运行良好,但我有很多 crontab 作为 root,大多数时候没有任何变化,我只是阻塞处理器。

我想仅当源上某处的文件发生更改时才启动 rsync 进程。

所以我读了 rsync.conf 文件的文档,但我不明白它是如何工作的。我现在的 rsync.conf 文件如下所示:

lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

&merge /etc/rsyncd.d
&include /etc/rsyncd.d

并且 /etc/rsyncd.d 文件夹为空。

我需要如何编写配置才能使 rsync 作为守护进程运行并在文件更改时进行同步。我知道 -a 选项只是发送差异,并且当某些内容发生变化时,我不确定如果守护进程正在运行它,我是否可以保存处理器。

答案1

rsync 守护进程不监视文件系统,它只是一个监听器。它等待其他 rsync 作业启动并连接以移动文件。

出于您的目的,您需要一些东西来监视更改(la inotify)并使用该信息来启动 rsync 过程。这些其他答案可能是很好的起点。

大量文件上的 inotify 和 rsync

https://serverfault.com/questions/688656/how-do- Correctly-sync-millions-of-files-with-rsync-and-inotify

相关内容