inotify + rsync实现的同步机制,为什么有两个进程?
#!/bin/bash host=192.168.1.221 src=/data/html/ des=html user=html /usr/bin/inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files; do /usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsync/html.passwd $src $user@$host::$des &>/dev/null && echo "${files} was rsyncd." >> /var/log/rsync/rsync.log 2>&1 done
以上是shell脚本,启动后,就会出现两个进程
root 23015 19144 0 15:23 pts/0 00:00:00 /bin/bash ./rsync.sh root 23017 23015 0 15:23 pts/0 00:00:00 /bin/bash ./rsync.sh
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
rsync的工作方式是创建两个进程,即发送方和接收方,这两个流程创建文件列表及其元数据,以相互决定需要更新哪些文件.即使是本地文件,也可以这样做,但是在这种情况下,进程可以通过管道而不是网络套接字进行通信.确定更改文件列表后,更改将作为增量或整个文件发送.
从理论上讲,一个文件可以将文件列表中的整个文件发送给另一个文件,以进行比较,但是实际上,这在许多情况下效率很低.如果接收器检测到需要更新文件,否则接收器将需要将这些文件保留在内存中,否则需要重新发送文件中的更改.这里的任何可能的解决方案听起来都不是很有效.
关于rsync的(理论)机制有很好的概述:https://rsync.samba.org/how-rsync-works.html